簡體   English   中英

jQuery Ajax PUT 請求

[英]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.stringifycontentType: "application/json"而不是或與dataType: "json"一起嘗試了它。 切換瀏覽器也不會改變任何東西。

url 100% 正確,對象body_user_update也是body_user_update (至少surnamefirstnametoken的值)

編輯:我嘗試了 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM