我正在localhost
使用jquery的$.ajax
向我的服务器发送一些数据。
数据为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
?>
但问题是$.ajax
警告error:
部分textStatus
作为parsererror。即使我没有使用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数据并在服务器上正确处理它?
还有一个问题,我可以将$_POST
格式的额外JSON
参数添加到queryString
data: queryString +"&&navigator="+navigator.userAgent+""
作为{{1}}吗?但这也不起作用(虽然这并不重要,但对它很好奇)。
仅供参考我使用php 5.2运行IIS 7服务器,使用JSON2.js运行JQuery 1.7.2版。
希望这里的专家会帮助我。
答案 0 :(得分:0)
删除行&#39; var queryString = JSON.stringify(jso);&#39;并传递对象jso作为数据可能会有所帮助。试一次。