我使用这个函数将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字符串解码为数组。
此函数的第一个参数,即您计划读取的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']
。