我有一个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网址更改为myphpfile.php?id=10
时,响应正确并且10
已记录到控制台。
我已经尝试了很多东西来解决这个问题,没有任何效果。这包括设置contentType: 'application/json; charset=utf-8'
,dataType: 'json'
和data: JSON.stringify(send)
。我无法找到关于此问题的论坛问题或文章,而我发现的问题或文章也没有用。
感谢任何帮助。
答案 0 :(得分:2)
所以这里有几个问题:
PUT请求处理数据解析与POST不同,这是您格式化请求的方式。如此高兴的回复了解更多细节。
您返回一个json字符串,但不要将其转换为js对象。您需要$.parseJSON(...)
之类的东西才能正确返回对象。如下所示:
success: function(responseData) {
var r = $.parseJSON(responseData);
console.log(r.response);
}
答案 1 :(得分:1)
您无法通过PUT
访问$_REQUEST
请求中的数据。你需要这样的东西:
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
}