Bagaimana cara mengirim permintaan PUT / HAPUS di jQuery?


Jawaban:


924

Anda bisa menggunakan metode ajax :

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

65
Hanya sebuah catatan, jika Anda menggunakan server web IIS dan jquery PUTatau DELETEpermintaan menghasilkan 404 kesalahan, Anda harus mengaktifkan kata kerja ini di IIS. Saya menemukan ini sebagai sumber yang bagus: geekswithblogs.net/michelotti/archive/2011/05/28/…
TimDog

22
HATI-HATI: "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."dari: api.jquery.com/jQuery.ajax/#options
andilabs

23
@andi Sesuai stackoverflow.com/questions/1757187/... browser apa pun dari IE6 mendukung metode http ini. Kecuali Anda mengembangkan peramban kuno , Anda dapat menggunakan metode http dengan aman di luar "GET" dan "POST".
Martin Carney

1
Selain itu, Anda tidak dapat mengirimkan data formulir . Itu harus melalui URI.
xavier

6
untuk versi setelah 1.9, Anda dapat menggunakan methodatautype
situs

124

$.ajax akan bekerja.

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

4
PUT diperlukancontentType: "application/json"
KingRider

3
Apakah ada perbedaan antara jawaban ini dan jawaban Darin Dimitrov? Saya berasumsi mereka berdua diciptakan pada saat yang sama, dan karena itu tidak ada plagiarisme, tetapi saya tidak melihat apa yang ditambahkan oleh jawaban ini (terlepas dari reputasi 940 untuk Jacob).
Andrew Grimm

72

Kami dapat memperluas jQuery untuk membuat pintasan untuk PUT dan DELETE:

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
    });
  };
});

dan sekarang Anda dapat menggunakan:

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

salin dari sini


Hapus tidak mengharapkan data sementara put tidak, tidak untuk mengatakan bahwa $. Get dan $ .post dapat memiliki tanda tangan yang berbeda sementara di sini Anda membuat hardcoding ke satu
Francisco Presencia

1
@FranciscoPresencia - 1. Hapus tidak mengharapkan data sementara cant melakukan ----> Baris ketiga menangani skenario ini 2. $ .get dan $ .post dapat memiliki tanda tangan yang berbeda ----> Ini hanya membuat metode jquery tambahan untuk dihapus dan dimasukkan. dapatkan dan kirim memiliki metode jquery mereka sendiri.
Mahesh


10

Dari sini , Anda dapat melakukan ini:

/* 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');
    }
});

Ini pada dasarnya hanya salinan $.post()dengan parameter metode yang disesuaikan.


9

Ini panggilan ajax yang diperbarui untuk saat Anda menggunakan JSON dengan jQuery> 1.9:

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

5

Anda harus dapat menggunakan jQuery.ajax:

Muat halaman jarak jauh menggunakan permintaan HTTP.


Dan Anda dapat menentukan metode mana yang harus digunakan, dengan typeopsi :

Jenis permintaan untuk membuat (" POST" atau " GET"), standarnya adalah " GET".
Catatan: Metode permintaan HTTP lainnya, seperti PUTdan DELETE, juga dapat digunakan di sini, tetapi mereka tidak didukung oleh semua browser.


4
Anda tahu browser mana yang tidak mendukung PUTatau DELETE?
Lea Hayes

4
Yang rusak, jika mereka tidak mampu HTTP: ^)
XTL

4

ajax ()

mencari tipe param

Metode permintaan HTTP lainnya, seperti PUT dan DELETE, juga dapat digunakan di sini, tetapi mereka tidak didukung oleh semua browser.


3

Untuk singkatnya:

$.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
  });
}

Kurasa tidak ada bidang data
Bob

1

Anda dapat melakukannya dengan AJAX!

Untuk PUTmetode:

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

Untuk DELETEmetode:

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

7
Ini sudah dikatakan bertahun-tahun sebelum Anda memposting jawaban ini. Ini hanya kebisingan, sama sekali tidak menambahkan hal baru.
Shadow Wizard adalah Telinga Untuk Anda


0

Jika Anda perlu membuat $.postkarya ke Laravel Route::deleteatau Route::puthanya menambahkan argumen "_method"="delete"atau "_method"="put".

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

Harus bekerja untuk Kerangka kerja lain

Catatan: Diuji dengan Laravel 5.6 dan jQuery 3


-1

Anda dapat memasukkan dalam hash data Anda sebuah kunci bernama: _method dengan nilai 'delete'.

Sebagai contoh:

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

Ini juga akan berlaku untuk


3
Ini hanya melakukan posting.
ctrl-alt-delor

1
Ini akan bekerja dengan rel, _method digunakan untuk tunnel metode http melalui POST (walaupun Anda mungkin hanya menggunakan ini dengan formulir - mereka hanya bisa mendapatkan / memposting).
opsb

Ini juga akan bekerja dengan Laravel jika Anda melakukannya dari formulir dengan metode POST.
John Shipp

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.