Как отправить запрос PUT/DELETE в jQuery?

GET:$.get(..)

POST:$.post()..

насчет PUT/DELETE?

12 ответов


можно использовать ajax способ:

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

$.ajax будет работать.

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

мы можем расширить 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);
})

копия с здесь


кажется возможным с функция ajax JQuery указать

type: "put" или type: "delete"

и поддерживается не всеми браузерами, но большинством из них.

проверьте этот вопрос для получения дополнительной информации о совместимости:

доступны ли методы PUT, DELETE, HEAD и т. д. В большинстве веб-браузеров?


С здесь, вы можете сделать это:

/* 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() с адаптированным параметром метода.


вы должны иметь возможность использовать jQuery.ajax :

загрузить удаленную страницу с помощью HTTP запрос.


И вы можете указать, какой метод следует использовать, с type опции :

тип запроса сделать ("POST" или "GET"), по умолчанию это "GET".
Примечание: Другие Методы HTTP-запросов, такие как PUT и DELETE, можно также использовать здесь, но они не поддерживается всеми броузеры.


ajax ()

ищите param тип

другие методы HTTP-запросов, такие как PUT и DELETE, также могут использоваться здесь, но они не поддерживаются всеми браузерами.


вот обновленный ajax вызов, когда вы используете JSON с 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
    }
});

вы можете сделать это с 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
  }
});

для краткости:

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

Я написал плагин jQuery, который включает в себя решения, обсуждаемые здесь с поддержкой кросс-браузера:

https://github.com/adjohnson916/jquery-methodOverride

зацените!


вы можете включить в хэш данных ключ под названием: _method со значением 'delete'.

например:

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

Это также будет применяться для