jQueryでPUT / DELETEリクエストを送信する方法は?


回答:


924

あなたはajaxメソッドを使うことができます:

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

65
IISウェブサーバーを使用していて、jquery PUTまたはDELETEリクエストが404エラーを返す場合は、IISでこれらの動詞を有効にする必要があります。:私はこれは良いリソースであることがわかってきましたgeekswithblogs.net/michelotti/archive/2011/05/28/...
TimDog

22
注意する"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
1として@andi stackoverflow.com/questions/1757187/...サポートこれらのHTTPメソッド上のIE6から任意のブラウザ。古いブラウザ用に開発しているのでない限り、「GET」と「POST」以外のhttpメソッドを安全に使用できます。
Martin Carney、2015年

1
また、フォームデータを渡すことはできません。URIを通過する必要があります。
ザビエル2015年

6
バージョン1.9の後にあなたが使用することができますmethodtype
サイト

124

$.ajax 働くでしょう。

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

4
PUTが必要contentType: "application/json"
KingRider 2016

3
この答えとダリン・ディミトロフの違いはありますか?両方が同時に作成されたため、盗作はなかったと思いますが、この答えが何を追加するのかわかりません(940の評判はジェイコブを除いて)。
Andrew Grimm

72

jQueryを拡張して、PUTおよび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
    });
  };
});

そして今あなたは使うことができます:

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

ここからコピー


Deleteはデータを期待していませんが、putはデータを期待していません。ここでは、$。getと$ .postが異なる署名を持っている可能性があると言っているわけではありません。ここで1つにハードコーディングしています
Francisco Presencia

1
@FranciscoPresencia-1. putがデータを削除するときにデータを期待しない----> 3行目がこのシナリオを処理します2. $ .getと$ .postは異なるシグネチャを持つことができます---->これは追加のjqueryメソッドを作成するだけです削除して置く。getとpostには独自のjqueryメソッドがあります。
Mahesh、


10

ここから、これを行うことができます:

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

これは基本的に$.post()は、メソッドパラメータを適合させた単なるコピーです。


9

以下は、jQuery> 1.9でJSONを使用している場合の更新されたajax呼び出しです。

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

5

あなたは使用できるはずですjQuery.ajax

HTTPリクエストを使用してリモートページをロードします。


また、typeオプションを使用して、使用する方法を指定できます。

作成するリクエストのタイプ( " POST"または " GET")、デフォルトは " GET"。
注:PUTおよび などの他のHTTPリクエストメソッドDELETEもここで使用できますが、すべてのブラウザでサポートされているわけではありません。


4
どのブラウザがサポートしていないか知っていますPUTDELETE
Lea Hayes、

4
壊れたもの(HTTPに対応していない場合):^)
XTL

4

ajax()

パラメータタイプを探す

PUTやDELETEなどの他のHTTPリクエストメソッドもここで使用できますが、すべてのブラウザでサポートされているわけではありません。


3

簡潔にするために:

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

データフィールドがないと思います
Bob

1

あなたはAJAXでそれを行うことができます!

以下のためのPUT方法:

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

以下のためのDELETE方法:

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

7
これは、この回答を投稿する何年も前にすでに言われていました。これは単なるノイズであり、まったく新しいことは何もありません。
Shadow WizardはEar For You


0

$.postLaravelで作業を行う必要がある場合、Route::deleteまたはRoute::put単に引数"_method"="delete"またはを追加する必要がある場合"_method"="put"

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

他のフレームワークで機能する必要があります

注:Laravel 5.6およびjQuery 3でテスト済み


-1

データハッシュに、「削除」という値の_methodというキーを含めることができます。

例えば:

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

これも適用されます


3
これは単に投稿を行います。
ctrl-alt-delor 14

1
これはレールで機能し、_methodはPOSTを介してhttpメソッドをトンネリングするために使用されます(ただし、フォームでのみ使用する必要があります-get / postしか実行できません)。
opsb 2014

これは、POSTメソッドを使用してフォームから行う場合、Laravelでも機能します。
John Shipp

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.