PHP-在PHP中检索ajax发布的json对象
我使用此函数将json发送到php页面:PHP-在PHP中检索ajax发布的json对象,php,jquery,ajax,json,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='+da
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页面上,我如何$\u请求对象?还是我做错了?在PHP端,使用$\u POST['postid']获取'66',等等。如果在AJAX查询中使用类型:'get',应该在PHP端使用$\u get['postid']。在PHP端,使用$\u POST['postid']获取'66',等等。如果在AJAX查询中使用类型:'get',应该使用$\u get['postid']在PHP端。您可以使用该函数将JSON字符串解码为数组。您可以使用该函数将JSON字符串解码为数组。JQuery有一个整洁的函数,允许我们读取外部和本地JSON文件。 url,[数据],[回调]
此函数的第一个参数是必需的,即您计划读取的URL。如果需要将数据发布到URL,则使用第二个参数。最后但并非最不重要的一点是,回调函数虽然不是必需的,但几乎总是必需的。JQuery有一个整洁的函数,允许我们读取外部和本地JSON文件。 url,[数据],[回调]
此函数的第一个参数是必需的,即您计划读取的URL。如果需要将数据发布到URL,则使用第二个参数。最后但同样重要的是,回调函数虽然不是必需的,但几乎总是必需的。首先,您应该以application/json而不是application/x-www-form-urlencoded的形式传递数据
...,
data: JSON.stringify(data),
...,
在服务器端,使用将JSON编码的字符串解码为对象。这个函数非常严格,依赖于正确编写的JSON
它使用您提供的JSON进行了尝试,效果非常好。
例子:
如果只传递一个对象,我建议去掉周围的方括号。我还将确保以JSON格式而不是字符串传递值。这将产生以下JSON:
{
"postid":66,
"values":{
"field_key":"a",
"oldvalue":"b",
"newvalue":"c dad"
}
}
首先,您应该以application/json而不是application/x-www-form-urlencoded的形式传递数据
...,
data: JSON.stringify(data),
...,
在服务器端,使用将JSON编码的字符串解码为对象。这个函数非常严格,依赖于正确编写的JSON
它使用您提供的JSON进行了尝试,效果非常好。
例子:
如果只传递一个对象,我建议去掉周围的方括号。我还将确保以JSON格式而不是字符串传递值。这将产生以下JSON:
{
"postid":66,
"values":{
"field_key":"a",
"oldvalue":"b",
"newvalue":"c dad"
}
}
我确实在我的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);
希望这有帮助…我确实在我的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对象只有一行,将来我会有多个id。我曾尝试使用$_REQUEST['data'],但结果为空。这是因为在PHP中无法获取javascript变量数据。你只能得到你发送给它的数据。使用var\u dump$\u POST;看看你在PHP端到底收到了什么。另外,不要使用$\u请求:var\u dump$\u POST;返回array0{}为什么不使用$\u请求?如果var\u dump返回array0,那么问题不在PHP中。从你的表演来看,我不知道它在哪里。请参阅为什么不在我在其他注释中提供的链接中使用$_请求:我的示例中的json对象只有一行,将来我将有多个id。我曾尝试使用$_REQUEST['data'],但结果为空。这是因为在PHP中无法获取javascript变量数据。你只能得到你发送给它的数据。使用var\u dump$\u POST;看看你在PHP端到底收到了什么。另外,不要使用$\u请求:var\u dump$\u POST;返回array0{}为什么不使用$\u请求?如果var\u dump返回array0,那么问题不在PHP中。从你的表演来看,我不知道它在哪里。请参阅为什么不在我在其他评论中提供的链接中使用$_REQUEST:问题是我在尝试$_REQUEST['data']时得到null,所以json_解码当然不起作用。您的帖子中出现了一些错误。也可以使用$\u POST。然后尝试添加以下内容:contentType:application/json;charset=utf-8。问题是我在尝试$_请求['data']时得到null,所以json_解码当然不起作用。您的帖子中出现了一些错误。也可以使用$\u POST。然后尝试添加以下内容:contentType:application/json;charset=utf-8。我想找出我的代码有什么问题:-但感谢您的选择我想找出我的代码有什么问题:-但感谢您的选择您的请求中有点奇怪:您将contentType设置为application
/json但将数据作为application/x-www-form-urlencodedSomething在您的请求中很奇怪:您将contentType设置为application/json,但将数据作为application/x-www-form-urlencoded发送