使用AJAX向服务器发送多级javascript对象失败

时间:2010-02-08 22:16:37

标签: javascript ajax jquery

我有一个看起来像这样的javascript对象:

var obj = {

    "name": "username",
    "userid": "9999",

    "object1": {
        "subObject1": {
            "subArray1": [],
            "subArray2": []
        },
        "subObject2": {
            "subArray3": [],
            "subArray4": []
        }
    },
    "object2": {
        "subObject3": {
            "subArray5": [],
            "subArray6": []
        }
    },
    "array1": [],
    "array2": []
};

我试过像这样使用jQuery ajax调用:

$.ajax({

    url: "test.php",
    type: "POST",
    dataType: "text",
    processData: false,
    data: obj,
    success: function(data, status) {

        alert("Sucsess");        
    }
});

问题是PHP没有收到任何东西。 $ _POST变量为空。我不确定我做错了什么。

由于

4 个答案:

答案 0 :(得分:4)

首先,在页面上添加JSON2.js(该页面底部的链接),然后将您的呼叫更改为:

$.post(
  "test.php", 
  data: JSON.stringify( obj ), 
  function(data, status) {
        alert("Sucsess");        
  });

答案 1 :(得分:1)

尝试jQuery 1.4.1 $.param function被完全重写以支持这样的事情。

答案 2 :(得分:0)

我不相信可以像这样发送数据对象。

如果你想做类似的事情,你必须在发送数据之前序列化它,然后在服务器上反序列化。 HTTP有它的限制。

答案 3 :(得分:0)

为什么不通过使用类似json2库的东西来发送它来将整个对象序列化为JSON,然后通过单个参数发送它?我不知道PHP,但如果没有几十种可用的替代JSON解析器,我会感到震惊。