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
@andi stackoverflow.com/questions/1757187/…에 따라 IE6의 모든 브라우저는 이러한 http 메소드를 지원합니다. 고대 브라우저 용으로 개발하지 않는 한 "GET"및 "POST"이외의 HTTP 메소드를 안전하게 사용할 수 있습니다.
Martin Carney

1
또한 양식 데이터를 전달할 수 없습니다 . URI를 거쳐야합니다.
xavier

6
버전 1.9 후에 사용할 수 있습니다 method또는type
사이트

124

$.ajax 작동합니다.

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

4
PUT 필요contentType: "application/json"
KingRider

3
이 답변과 Darin Dimitrov의 차이점이 있습니까? 나는 그것들이 동시에 생성되었다고 가정하므로 표절이 없었지만이 답변이 무엇을 추가하는지 알지 못합니다 (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);
})

여기 에서 복사


삭제는 $ .get과 $ .post가 서로 다른 서명을 가질 수 있다고 말하지 않고, 데이터 를 넣는 동안 데이터 를 기대하지 않습니다. 여기에서 하나의 하드 코딩을하고 있습니다
Francisco Presencia

1
@FranciscoPresencia-1. 삭제는 넣을 때 데이터를 기대하지 않습니다 ----> 세 번째 줄은이 시나리오를 처리합니다. $ .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()method 매개 변수가 적용된 사본입니다 .


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"입니다.
참고 : 같은 다른 HTTP 요청 방법, PUT그리고 DELETE, 여기 사용할 수 있지만 모든 브라우저에서 지원되지 않습니다.


4
당신은 브라우저가 지원하지 않는 알고 PUTDELETE?
Lea Hayes

4
HTTP가 불가능한 경우 손상된 것 : ^)
XTL

4

아약스 ()

param type을 찾으십시오

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 is Ear for You


0

$.post라벨에 작품 을 만들 Route::delete거나 Route::put인수 또는를 추가 해야하는 "_method"="delete"경우 "_method"="put".

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

다른 사람을 위해 작동해야합니다

참고 : Laravel 5.6 및 jQuery 3으로 테스트


-1

데이터 해시에 값이 'delete'인 _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

1
이것은 레일과 함께 작동하며 _method는 POST를 통해 http 메소드를 터널링하는 데 사용됩니다 (아마도 이것을 양식에서만 사용해야하지만 가져 오기 / 게시 만 할 수 있음).
opsb

POST 메소드가있는 양식에서 수행하는 경우 Laravel에서도 작동합니다.
John Shipp

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.