[英]jQuery Ajax PUT request
我嘗試使用此代碼執行 PUT 請求:
var body_user_update = JSON.stringify({
"surname": document.getElementById(userID + "_surnameTextbox").value,
"firstname": document.getElementById(userID + "_firstnameTextbox").value,
"token": document.getElementById(userID + "_tokenTextbox").value
});
$.ajax({
dataType: "json",
url: "http://" + serverName + "/user/" + userID,
type: "PUT",
data: body_user_update,
success: function (data) {
// doing some stuff
},
error: function (message) {
// error alert
}
});
所以問題是我總是在錯誤函數中結束。 我發現的一切都是正確的,所以我不知道錯誤是什么。
我已經在沒有JSON.stringify
和contentType: "application/json"
而不是或與dataType: "json"
一起嘗試了它。 切換瀏覽器也不會改變任何東西。
url 100% 正確,對象body_user_update
也是body_user_update
。 (至少surname
, firstname
和token
的值)
編輯:我嘗試了 Postman 的請求並得到了這個:
{ "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13", "title": "不支持的媒體類型", "status": 415, "traceId": "|94c1b46 -45b6529063414be7。” }
您的服務器顯示“415 不支持的媒體類型”。 這意味着您的請求沒有正確設置Content-Type
標頭。
顯然,您的服務器需要 JSON 編碼的數據。 因此,您需要將內容類型標頭設置為application/json
並防止 jQuery 進一步處理您的數據:
$.ajax({
url: "http://" + serverName + "/user/" + userID,
type: "PUT",
contentType: 'application/json',
processData: false,
data: JSON.stringify({
surname: $("#" + userID + "_surnameTextbox").val(),
firstname: $("#" + userID + "_firstnameTextbox").val(),
token: $("#" + userID + "_tokenTextbox").val()
})
}).done(function (data) {
// doing some stuff
}).fail(function (error) {
// error alert
});
如果您多次需要該操作,請創建一個輔助函數:
$.putJSON = function (endpoint, data) {
return $.ajax({
url: "http://" + serverName + endpoint,
type: "PUT",
contentType: 'application/json',
processData: false,
data: JSON.stringify(data)
}).fail(function (error) {
// error alert
});
});
// later ...
$.putJSON("/user/" + userID, {
surname: $("#" + userID + "_surnameTextbox").val(),
firstname: $("#" + userID + "_firstnameTextbox").val(),
token: $("#" + userID + "_tokenTextbox").val()
}).done(function (data) {
// doing some stuff
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.