我将一个带有4个单词的简单JSON数组传递给PHP。我想在序列化后将该数组存储在数据库中。由于它是一个Ajax调用,我只能通过json_encode
调查任何回显的值,并在AJAX成功函数中提醒它们。
这是我的代码:
var jsonString = JSON.stringify(ans);
//if I alert jsonString - it shows the proper array
$.ajax({
type: "POST",
url: "script.php",
data: jsonString,
cache: false,
success: function(data){
alert(data);
},
error: function(){
alert("error");
}
});
这就是我在PHP中用数组做的事情:
$answerAr = json_decode($_POST['data']);
$answers = serialize($answerAr);
如果我回复json_encode
($answerAr
),它会在Ajax中发出NULL警告,$answers
变成' N;
'
Json_last_error
返回0.
答案 0 :(得分:1)
如果您直接向PHP发布数据,则必须使用php://input
并解析该数据; JSON中给出的数据不是表单数据,也不会自动填充请求超级全局($_GET
,$_POST
)。
$data = json_decode(file_get_contents("php://input"));
大多数框架都会透明地为您执行此操作,并使用其中的数据填充请求对象。您应该检查请求是否通过标头(Content-Type
,Accept: application/json
等)在正文中发送JSON数据
或者,您可以更改AJAX调用以为其提供数组键:
$.ajax({
data: {data: jsonString},
// etc
});
然后可以$_POST["data"]
答案 1 :(得分:0)
将您的ajax数据属性更改为这样并尝试
数据:{json:jsonString}
在php脚本中你可以通过
访问它$ answerAr = json_decode($ _ POST ['json']);