JQuery'de PUT / DELETE isteği nasıl gönderilir?


Yanıtlar:


924

Ajax yöntemini kullanabilirsiniz :

$.ajax({
    url: '/script.cgi',
    type: 'DELETE',
    success: function(result) {
        // Do something with the result
    }
});

65
Yalnızca bir not, IIS web sunucusu kullanıyorsanız ve jquery PUTveya DELETEistekler 404 hataları döndürüyorsa, IIS'de bu fiilleri etkinleştirmeniz gerekir. Bunu iyi bir kaynak olarak buldum: geekswithblogs.net/michelotti/archive/2011/05/28/…
TimDog

22
DİKKAT EDİN : "The type of request to make ("POST" or "GET"), default is "GET". Note: Other HTTP request methods, such as PUT and DELETE, can also be used here, but they are not supported by all browsers."from: api.jquery.com/jQuery.ajax/#options
andilabs

23
@andi stackoverflow.com/questions/1757187/… uyarınca IE6 üzerinde herhangi bir tarayıcı bu http yöntemlerini destekler. Eski bir tarayıcı için geliştirmediğiniz sürece , "GET" ve "POST" ötesinde http yöntemlerini güvenle kullanabilirsiniz.
Martin Carney

1
Ayrıca, form verilerini iletemezsiniz . URI'den geçmesi gerekiyor.
xavier

6
1.9 sonrası sürümler için kullanabilirsiniz methodveyatype
siteleri

124

$.ajax çalışacak.

$.ajax({
   url: 'script.php',
   type: 'PUT',
   success: function(response) {
     //...
   }
});

4
PUT mu gerekcontentType: "application/json"
KingRider

3
Bu cevap ile Darin Dimitrov'un cevapları arasında herhangi bir fark var mı? İkisinin de aynı anda yaratıldığını varsayıyorum ve bu nedenle herhangi bir intihal yoktu, ama bu cevabın ne eklediğini göremiyorum (Jacob'a 940 itibarı dışında).
Andrew Grimm

72

JQuery'yi PUT ve DELETE kısayolları yapmak için genişletebiliriz:

jQuery.each( [ "put", "delete" ], function( i, method ) {
  jQuery[ method ] = function( url, data, callback, type ) {
    if ( jQuery.isFunction( data ) ) {
      type = type || callback;
      callback = data;
      data = undefined;
    }

    return jQuery.ajax({
      url: url,
      type: method,
      dataType: type,
      data: data,
      success: callback
    });
  };
});

ve şimdi kullanabilirsiniz:

$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
   console.log(result);
})

buradan kopyala


Sil, koyulurken veri beklemez , $ .get ve $ .post'un burada farklı imzalara sahip olabileceğini söylemezsiniz - burada bire kodluyorsunuz
Francisco Presencia

1
@FranciscoPresencia - 1. Silme işlemi koyarken verileri beklemez ----> Üçüncü satır bu senaryoyu işler 2. $ .get ve $ .post farklı imzalara sahip olabilir ----> Bu sadece ek jquery yöntemleri oluşturuyor silmek ve koymak için. get ve post kendi jquery yöntemleri var.
Mahesh


10

Gönderen burada , bunu yapabilirsiniz:

/* Extend jQuery with functions for PUT and DELETE requests. */

function _ajax_request(url, data, callback, type, method) {
    if (jQuery.isFunction(data)) {
        callback = data;
        data = {};
    }
    return jQuery.ajax({
        type: method,
        url: url,
        data: data,
        success: callback,
        dataType: type
        });
}

jQuery.extend({
    put: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'PUT');
    },
    delete_: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'DELETE');
    }
});

Temelde $.post(), adapte edilen method parametresinin sadece bir kopyası .


9

İşte jQuery> 1.9 ile JSON kullanırken güncellenmiş bir ajax çağrısı:

$.ajax({
    url: '/v1/object/3.json',
    method: 'DELETE',
    contentType: 'application/json',
    success: function(result) {
        // handle success
    },
    error: function(request,msg,error) {
        // handle failure
    }
});

5

Kullanabilmeniz gerekir jQuery.ajax:

HTTP isteği kullanarak uzak bir sayfa yükleyin.


Ve hangi yöntemin kullanılması gerektiğini belirtebilirsiniz, typeseçeneği ile :

Yapılacak istek türü (" POST" veya " GET"), varsayılan " GET" şeklindedir.
Not: PUTve gibi diğer HTTP istek yöntemleri DELETEde burada kullanılabilir, ancak tüm tarayıcılar tarafından desteklenmez.


4
Eğer tarayıcılar desteklemez hangi biliyoruz PUTya DELETE?
Lea Hayes

4
HTTP yapamıyorlarsa bozuk olanlar: ^)
XTL

4

ajax ()

param tipini ara

PUT ve DELETE gibi diğer HTTP istek yöntemleri de burada kullanılabilir, ancak tüm tarayıcılar tarafından desteklenmez.


3

Kısalık için:

$.delete = function(url, data, callback, type){

  if ( $.isFunction(data) ){
    type = type || callback,
    callback = data,
    data = {}
  }

  return $.ajax({
    url: url,
    type: 'DELETE',
    success: callback,
    data: data,
    contentType: type
  });
}

Sanırım veri alanı yok
Bob

1

AJAX ile yapabilirsiniz!

İçin PUTbir yöntem:

$.ajax({
  url: 'path.php',
  type: 'PUT',
  success: function(data) {
    //play with data
  }
});

İçin DELETEbir yöntem:

$.ajax({
  url: 'path.php',
  type: 'DELETE',
  success: function(data) {
    //play with data
  }
});

7
Bu cevabı göndermeden yıllar önce zaten söylendi. Bu sadece gürültü, tamamen yeni bir şey eklemiyor.
Gölge Sihirbazı Senin için Kulak


0

$.postLaravel'de bir iş yapmanız Route::deleteveya Route::putsadece bir argüman eklemeniz gerekiyorsa "_method"="delete"veya "_method"="put".

$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...

Başkaları için çalışmalı

Not: Laravel 5.6 ve jQuery 3 ile test edilmiştir


-1

Veri karma işleminize şu anahtar adını ekleyebilirsiniz: _method 'delete' değeri.

Örneğin:

data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
  alert('Yupi Yei. Your product has been deleted')
});

Bu ayrıca aşağıdakiler için de geçerli olacaktır:


3
Bu sadece bir gönderi yapar.
ctrl-alt-delor

1
Bu raylarla çalışır, _method POST üzerinden http yöntemlerini tünellemek için kullanılır (ancak bunu yalnızca formlarla kullanmanız gerekir - ancak yalnızca get / post yapabilirler).
opsb

POST yöntemiyle bir formdan yapıyorsanız, Laravel ile de çalışır.
John Shipp

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.