使用jquery ajax将数据以json形式发送到php脚本时出现pareser错误

pareser error while sending data as json to php script using jquery ajax

本文关键字:脚本 php 错误 pareser ajax jquery 数据 json 使用      更新时间:2023-09-26

我正在使用jquery的$.ajax向位于localhost的服务器发送一些数据。

数据是JSON对象。

如下所示:

javascript

var jso={
    "data": {
        "Game_name": "Road Rash",
        "cheat": "xyzzyspoon!",
        "effects": [
            {
                "nitro": true
            },
            {
                "chain": false
            }
        ]
    }
};
function sendData(){
var queryString=JSON.stringify(jso);
$.ajax({
    type: "POST",
    url: "/gamers_cheats.php",
    contentType: "application/json; charset=utf-8",
    traditional: true,
    dataType: 'json',
    data: queryString,
    success: function(data){
        console.log(data);
    },
    error: function(data,textStatus,jqXHR){
    alert("Unknown Error occured :- 'n "+textStatus+"'n error");
    console.log("Unknown Error occured :- 'n "+textStatus+"'n error");
    }
});
}
sendData();

并将我的php文件中的数据处理为:

gamers_cheats.php:

<?php
var_dump($_POST);
echo"'n Count:- ".count($_POST);
// This is Just a demo file
?>

但问题是$.ajaxtextStatus作为解析器错误来警告error:部分。同样的情况也发生了,即使我并没有使用JSON.stringify.

如果线路:

    contentType: "application/json; charset=utf-8",
    traditional: true,
    dataType: 'json',

则该请求被发送到服务器,但这不是有效的请求,因为它向JSON对象中的每个(")添加了额外的斜杠(')。

类似:

'"data'": {
        '"Game_name'": '"Road Rash'",
        '"cheat'": '"xyzzyspoon!'",
        '"effects'": [
            {
                '"nitro'": true
            },
            {
                '"chain'": false
            }
        ]
    }

所以在服务器端处理时会出现错误。是否有任何方法可以使用jquery ajax正确发送POST JSON数据,并在服务器上正确处理它?

还有一个问题,我可以将非JSON格式的额外$_POST参数添加到我的queryString中作为data: queryString +"&&navigator="+navigator.userAgent+""吗?但这也不起作用(这并不重要,只是好奇而已)。

仅供参考,我正在运行带有php5.2的IIS 7服务器和带有JSON2.js.的JQuery 1.7.2版本

希望这里的专家能帮助我。

删除行'var queryString=JSON.stringfy(jso);'将对象jso作为数据传递可能会有所帮助。试试看。