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


PHP - retrieve ajax posted json object in PHP

我使用这个函数将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');
        }
    }); 

在firebug中,我可以看到发布的数据:

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

在我的php页面上,我如何$_REQUEST对象?还是我做错了?

我确实在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);

希望这能帮助。。。

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

JQuery有一个简洁的函数,允许我们读取外部和本地JSON文件。jQuery.getJSON(url,[data],[callback])

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

首先,您应该以"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"
   }
}

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