PHP - 在PHP中检索ajax发布的json对象

时间:2012-02-17 10:26:46

标签: php jquery ajax json

我正在使用此函数将json发送到php页面:

function update_records(data) {
    data = data;
    $.ajax({
        type: 'POST',
        cache: false,
        timeout: 2000,
        contentType: 'application/json',
        url: 'update.php',
        data: data, //'data='+data+'&aid=0',
        success: function() {
            success_message('success');
        },
        error: function(){
            failure_message('failure');
        }
    }); 

在萤火虫中,我可以看到发布的数据:

[{
    "postid": 66,
    "values": [
        "field_key=a",
        "oldvalue=b",
        "newvalue=c dad"
    ]
}]

在我的php页面上,我如何$_REQUEST该对象?或者我做错了吗?

5 个答案:

答案 0 :(得分:1)

我确实在我的js

上使用此代码解决了这个问题

这是我收集数据的方式 我创建了对象

jsonObj={"postid":postid,"value":value};
var jsonString=JSON.stringify(jsonObj);

现在我使用ajax

发送了该对象
$.ajax({
  type: 'POST',
  url: siteurl+'/wp-content/themes/crm/modules/update_lead.php',
  dataType : 'json',
  data: {action:actionType,data:data},
});

和目标PHP文件(/wp-content/themes/crm/modules/update_lead.php)

$json=json_decode(stripslashes($_POST['data']), true);

希望这会有所帮助...

答案 1 :(得分:0)

您可以使用json_decode函数将JSON字符串解码为数组。

答案 2 :(得分:0)

JQuery有一个简洁的功能,允许我们读取外部和本地JSON文件。 jQuery.getJSON(网址,[数据],[回调])

此函数的第一个参数是您计划阅读的URL,是必需的。如果需要将数据POST到URL,则使用第二个参数。最后但同样重要的是,回调函数虽然不是必需的,但几乎总是必要的。

答案 3 :(得分:0)

首先,您应该将数据作为“application / json”传递,而不是“application / x-www-form-urlencoded”。

...,
data: JSON.stringify(data),
...,

在服务器端使用json-decode()将JSON编码的字符串解码为对象。这个函数非常严格,依赖于正确编写的JSON。

它使用您提供的JSON进行了尝试,并且效果很好 例: http://codepad.org/WOH2wGZv

如果只传递一个对象,我建议摆脱周围的方括号。我还要确保“值”以JSON格式而不是字符串传递。这导致以下JSON:

{
   "postid":66,
   "values":{
      "field_key":"a",
      "oldvalue":"b",
      "newvalue":"c dad"
   }
}

答案 4 :(得分:-1)

在PHP方面,使用$_POST['postid']获取'66'等。如果您在AJAX查询中使用type: 'GET',则应该在PHP端使用$_GET['postid']