繁体   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