[英]Ajax - JSON doesnt get sent in PATCH only
我正在嘗試使用以下方法將json數據從客戶端發送到我的服務器:
$.ajax({
url : 'http://127.0.0.1:8001/api/v1/pulse/7/',
data : data,
type : 'PATCH',
contentType : 'application/json'
)};
我得到一個No JSON object could be decoded
。 但是,當我使用PUT
,json對象被發送。
它只適用於PATCH
后端是Django,使用的應用程序是tastypie
首先,檢查您是否使用最新版本的jQuery庫:
其次,並非所有瀏覽器都支持使用XMLHttpRequest的PATCH方法:
就像,IE 7,8(9+工作正常)有XMLHttpRequest,但它在PATCH上拋出一個錯誤:
new XMLHttpRequest().open('PATCH', '/'); //Illegal argument
要解決此問題,您可以強制jQuery使用舊的專有ActiveXObject xhr,如下所示:
$.ajax({ url : 'http://127.0.0.1:8001/api/v1/pulse/7/', data : data, type : 'PATCH', contentType : 'application/json', xhr: function() { return window.XMLHttpRequest == null || new window.XMLHttpRequest().addEventListener == null ? new window.ActiveXObject("Microsoft.XMLHTTP") : $.ajaxSettings.xhr(); } });
有點晚了,但是當我收到這個錯誤時,這對我有用:
$.ajax({
url : 'http://127.0.0.1:8001/api/v1/pulse/7/',
data : JSON.stringify(data),
type : 'PATCH',
contentType : 'application/json',
processData: false,
dataType: 'json'
});
自己序列化對象而不是讓jQuery這樣做似乎有所幫助。 這適用於我最新版本的Chrome,但仍然無法修復其他響應中提到的問題。
var request = new XMLHttpRequest();
request.open('PATCH', 'http://127.0.0.1:8001/api/v1/pulse/6/', false);
request.setRequestHeader("Content-type","application/json");
request.send('{"isActive": 1}');
使用XMLHttpRequest解決了它!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.