Ajax post - 将数组作为数据发送到PHP

时间:2014-12-28 08:51:20

标签: javascript php jquery ajax json

我需要将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);
        }
    });

现在我按照预期收到了帖子。

困境,两个答案都有助于解决问题。

2 个答案:

答案 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 ...
    ...