Javascript jQuery AJAX PUT请求数据提交不起作用
我有一个PHP文件,其中包含以下内容:Javascript jQuery AJAX PUT请求数据提交不起作用,javascript,php,jquery,ajax,put,Javascript,Php,Jquery,Ajax,Put,我有一个PHP文件,其中包含以下内容: if ($_SERVER['REQUEST_METHOD'] === 'PUT') { echo '{ "response": "' . $_REQUEST['id'] . '" }'; } 现在我想通过jQuery对此文件进行AJAX调用: var send = { id: 10 }; $.ajax({ data: send, method: 'PUT', url: "myphpfile.php", s
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'
,数据类型:'json'
和数据:json.stringify(send)
。我找不到更多关于这方面的论坛问题或文章,我找到的那些问题或文章都不起作用
非常感谢您的帮助。您无法通过
$\u请求
从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
}
success: function(responseData) {
var r = $.parseJSON(responseData);
console.log(r.response);
}
另请参见您无法通过
$\u请求
从放入
请求访问数据。你需要一些类似的东西:
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
}
success: function(responseData) {
var r = $.parseJSON(responseData);
console.log(r.response);
}
另请参见,这里有几个问题:
$.parseJSON(…)
的内容才能使对象正确返回。比如:
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
}
success: function(responseData) {
var r = $.parseJSON(responseData);
console.log(r.response);
}
所以这里有几个问题:
$.parseJSON(…)
的内容才能使对象正确返回。比如:
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
}
success: function(responseData) {
var r = $.parseJSON(responseData);
console.log(r.response);
}
您是否尝试过为ajax响应添加回调函数以查看是否有任何错误?您是否尝试过只使用console.log(responseData)?您收到的回复可能只是文本。因此,responseData.response不会显示任何值。PHP是否报告任何错误?检查您可能无法使用
$\u REQUEST
进行此操作是否确实不需要方法:“GET”
?但是,当我将AJAX url更改为myphpfile.php?id=10时,响应是正确的,10被记录到控制台。这可能是因为您的PHP正在寻找一个$_getvariableahh,请参阅本文。您是否尝试为ajax响应添加回调函数以查看是否存在任何错误?您是否尝试过仅使用console.log(responseData)?您收到的回复可能只是文本。因此,responseData.response不会显示任何值。PHP是否报告任何错误?检查您可能无法使用$\u REQUEST
进行此操作是否确实不需要方法:“GET”
?但是,当我将AJAX url更改为myphpfile.php?id=10时,响应是正确的,10被记录到控制台。这可能是因为您的PHP正在寻找一个$_getvariableahh,请参阅本文JS对象键不必被引用,当前的实现是有效的。至于响应,只需使用数据类型:'json',
,jQuery会为您进行转换,但确实值得一提的是,这会让我大吃一惊。我不知道jQuery可以做到这一点。但我在第一点上犯了错误,我将进行编辑以反映。干杯。谢谢你的帮助,非常感谢!JS对象键不必被引用,当前实现是有效的。至于响应,只需使用数据类型:'json',
,jQuery会为您进行转换,但确实值得一提的是,这会让我大吃一惊。我不知道jQuery可以做到这一点。但我在第一点上犯了错误,我将进行编辑以反映。干杯。谢谢你的帮助,非常感谢!