我需要将JSON数组传递给PHP,并将其作为$_POST['data']
接收。这将通过json_parse
包含我的数据。
我收到了一个错误,不知道这里发生了什么。 Ajax调用会引发以下错误:
[object Object] parsererror SyntaxError: Unexpected token <
我的代码:
function testJson() {
var arr = { };
arr['action'] = "anaction";
arr['type'] = "atype";
$.ajax("test2.php", {
type: "POST",
data: JSON.stringify({ data: arr}),
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
$("#result").html(data);
},
error: function (a, b, c) {
$('#error').html(a + " " + b + " " + c);
}
});
更多信息:之前提到的错误来自错误函数调用。
根据建议进行编辑并测试该功能现在的工作原理如下:
function testJson() {
var arr = { };
arr['action'] = "anaction";
arr['type'] = "atype";
$.ajax("test2.php", {
type: "POST",
data: {data : arr}, /* Stringify deleted and added an array there, i remove too a non needed json related stuff */
success: function (data) {
$("#result").html(data);
},
error: function (a, b, c) {
$('#error').html(a + " " + b + " " + c);
}
});
现在我按照预期收到了帖子。
困境,两个答案都有助于解决问题。
答案 0 :(得分:0)
如果在ajax函数中将dataType
设置为'json'
,则表示php文件应返回有效的json。在php文件中使用json_encode
。
答案 1 :(得分:0)
这里有多个问题:
var arr = { };
定义了一个对象,而var arr = [ ];
定义了一个数组。
用作arr['action'] = "anaction";
意味着它是一个对象,而不是一个数组,尽管如此命名。
通常,jQuery在内部完成工作:
$.ajax("test2.php", {
type: "POST",
data: { "data": arr} } // no need to stringify anything here ...
...