当我尝试 json_decode json.stringify数据时,它返回NULL,因此使用** json_last_error 来了解错误并返回以下错误消息
语法错误,格式错误的JSON
任何人都可以验证我在javascript函数中附带的ajax代码,并发现我已完成的错误。
以下是脚本代码
<script>
function callphp(){
var dataa = {};
dataa.dateipone = jQuery("#dateInputone").val();
dataa.dateiptwo = jQuery("#dateInputtwo").val();
dataa.ino = jQuery("#ino").val();
dataa.submit = "submit";
alert("Hello")
$.ajax({
url : "six-cuf.php",
type: 'POST',
data :JSON.stringify(dataa),
contentType : "application/json; charset=utf-8",
success:function(data)
{
if(data){
alert(data);
//console.log("Data from Server"+JSON.stringify(data));
}
else{
console.log("Data is empty");
}
},
error: function(xhr) {
alert('Error! Status = ' + xhr.status + " Message = " + xhr.statusText);
//console.log('Error! Status = ' + xhr.status + " Message = " + xhr.statusText);
}
});
}
以下是6-cuf.php
$data = json_decode($_POST['dataa']);
print_r($data);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
if(isset($_POST["dateipone"],$_POST["dateiptwo"],$_POST["ino"],$_POST["options"],$_POST["dateone"],$_POST["datetwo"],$_POST["submit"]))
{
//php code
}
dateipone,dateiptwo和dateone,datetwo中的...这一对的值将为空。
答案 0 :(得分:0)
在传递给服务器之前,不需要将任何内容编码到json中。你可以传递普通的javascript对象,浏览器会做其余的事情:
var dataa = {};
dataa.dateipone = jQuery("#dateInputone").val();
dataa.dateiptwo = jQuery("#dateInputtwo").val();
dataa.ino = jQuery("#ino").val();
dataa.submit = "submit";
$.ajax({
url : "six-cuf.php",
type: 'POST',
data: dataa,
// no content-type here!
success:function(data) {
}
});
在服务器端照常检查$_POST
数组:
print_r($_POST);
// you will have keys: `dateipone`, `dateiptwo`, `ino` and `submit` in it