簡體   English   中英

jQuery AJAX PUT請求數據提交無效

[英]jQuery AJAX PUT request data submission not working

我有一個PHP文件,其中包含以下內容:

if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
    echo '{ "response": "' . $_REQUEST['id'] . '" }';
}

現在我想通過jQuery對這個文件進行AJAX調用:

var send = {
    id: 10
};

$.ajax({
    data: send,
    method: 'PUT',
    url: "myphpfile.php",
    success: function(responseData) {
        console.log(responseData.response);
    }
});

這應該返回10作為響應,但輸出為空。 在PHP文件中,我也嘗試將id寫入文本文件,結果也是空的。 這意味着我的PHP代碼不是問題,它是JavaScript。

當我將AJAX url更改為myphpfile.php?id=10但是,響應是正確的,並且10被記錄到控制台。

我已經嘗試了很多東西來解決這個問題,沒有任何效果。 這包括設置contentType: 'application/json; charset=utf-8' contentType: 'application/json; charset=utf-8'dataType: 'json'data: JSON.stringify(send) 我找不到任何關於此的論壇問題或文章,我找到的不起作用。

任何幫助表示贊賞。

所以這里有幾個問題:

  1. PUT請求處理數據解析與POST不同,這是您格式化請求的方式。 很高興對更多細節的回應。

  2. 您返回一個json字符串,但不將其轉換為js對象。 你需要像$.parseJSON(...)這樣的東西來正確返回對象。 所以類似於:

     success: function(responseData) { var r = $.parseJSON(responseData); console.log(r.response); } 

您無法通過$_REQUESTPUT請求訪問數據。 你需要這樣的東西:

if ($_SERVER['REQUEST_METHOD'] === 'PUT') {

    parse_str(file_get_contents("php://input"),$sent_vars);
    echo json_encode(['response'=>$sent_vars['id']]); // use an array and json_encode to avoid messy string concatenation 
}

另請參閱從PHP訪問傳入的PUT數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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