在PHP中使用JSON对象,从jQuery发送

时间:2009-11-19 14:47:13

标签: php jquery json

我正在使用jQuery通过

向PHP发送一个JSON对象
$.ajax({
    url: myURL,
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    data: myData,
    processData: false,
    dataType: 'html',    
    async: false,
    success: function(html) {
        window.console.log(html);
    }
});    

并尝试使用

解码JSON对象
$GLOBALS["HTTP_RAW_POST_DATA"];

但变量的内容打印为

[object Object]

json_decode()返回NULL(当然)。

我需要做些什么来获取实际的JSON数据?

谢谢, 暖气。

6 个答案:

答案 0 :(得分:4)

看起来你正在向PHP发送一个字符串。默认情况下,Jquery以普通的post格式发送数据。 PHP可以很好地读取这些数据。我建议只从POST阵列中获取所需的数据。

如果您尝试通过JSON序列化Javascript对象,然后将其转换回PHP端的对象,那么您可能希望使用JSON路由。您需要一个插件才能将数据从字符串转换为JSON。您可能需要考虑: http://code.google.com/p/jquery-json/

你会改变这一行:

   data: myData,

要:

    data: $.toJSON(myData),

然后在PHP端,你仍然会收到post数组中的数据,你可以使用以下命令转换它:

$params = json_decode($_POST[]);

答案 1 :(得分:1)

看起来你向你的php脚本发送一个JSON对象,只是字符串'object Object'。

答案 2 :(得分:0)

您是否尝试过使用$ _POST?

我或多或少地处理了所有JSON请求:

$params = json_decode($_POST[]);

答案 3 :(得分:0)

您实际上是通过POST发送字符串。我建议使用JSON2对您的Javascript对象进行字符串化。 使用

var myData = JSON.stringify(myObject,replacer);

答案 4 :(得分:-1)

使用file_get_contents('php://input')代替$GLOBALS["HTTP_RAW_POST_DATA"];

答案 5 :(得分:-1)

您已在ajax调用中将dataType设置为“html”。不应该是'json'吗?我认为你的好json对象被压缩成无意义的字符串。