[英]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)
。 我找不到任何關於此的論壇問題或文章,我找到的不起作用。
任何幫助表示贊賞。
所以這里有幾個問題:
PUT請求處理數據解析與POST不同,這是您格式化請求的方式。 很高興對更多細節的回應。
您返回一個json字符串,但不將其轉換為js對象。 你需要像$.parseJSON(...)
這樣的東西來正確返回對象。 所以類似於:
success: function(responseData) { var r = $.parseJSON(responseData); console.log(r.response); }
您無法通過$_REQUEST
從PUT
請求訪問數據。 你需要這樣的東西:
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.