我有 3 个不同的 JSON 对象,我想使用 jQuery AJAX 连接并发送到 PHP 文件。我可以检索 PHP 文件中的 JSON 对象,但无法弄清楚如何循环结果。
这是我到目前为止所拥有的:
//my 3 JSON objects:
var json_obj_1{
"test1_key":"test1_val",
"test2_key":"test2_val",
"test3_key":"test3_val"
}
var json_obj_2{
"test4_key":"test4_val"
}
var json_obj_3{
"json_arr":[
{
"test1":"test2",
"test3":"test4"
}
]
}
//concat these to send over to the PHP file:
var my_json_obj = json_obj_1.concat(json_obj_2);
//I found if I didn't stringify obj_3 they didn't concatenate for some reason
my_json_obj = my_json_obj.concat(JSON.stringify(json_obj_3));
//my_json_obj now looks like this:
{
"test1_key":"test1_val",
"test2_key":"test2_val",
"test3_key":"test3_val"
}
{
test4_key: test4_val
}
{
"json_obj_3":[
{"test1":"test2","test3":"test4"}
]
}
基于这个问题:Sending JSON to PHP using ajax ,我不会对最终的 JSON 对象进行字符串化。
这是对 PHP 文件的 AJAX 调用:
$.ajax({
url: 'my_php_file.php',
data: {my_json_data: my_json_obj},
type: 'POST',
async: false,
dataType: 'json',
cache:false,
success:function(data, textStatus, jqXHR){
console.log('AJAX SUCCESS');
},
complete : function(data, textStatus, jqXHR){
console.log('AJAX COMPLETE');
}
});
这是在我的 PHP 文件中检索时的样子:
echo $_POST['my_json_data'];
//outputs:
{
"test1_key":"test1_val",
"test2_key":"test2_val",
"test3_key":"test3_val"
}
{
test4_key: test4_val
}
{
"json_obj_3":[
{"test1":"test2","test3":"test4"}
]
}
这就是我遇到问题的地方。我希望能够在 foreach 中循环它。根据我读到的内容( php: loop through json array ),我必须解码 JSON 对象。但是,当我执行此操作并循环遍历结果时,我得到:“PHP 警告:为 foreach() 提供的参数无效”。
即使我在将 JSON 对象发送到 PHP 文件之前对其进行字符串化,我也会遇到同样的问题。我已经用头撞砖墙好几个小时了。任何帮助将不胜感激。
提前致谢。
已解决:
在按照以下问题连接 JSON 对象时,我出错了:Merge two json/javascript arrays in to one array 。相反,我只是将它们放在一起,如下所示:
my_json_obj = '['+json_obj_1+','+json_obj_2+', '+JSON.stringify(json_obj_3)+']';
然后我在我的 PHP 文件中使用 json_decode ,这很有效。 http://json.parser.online.fr/对于调试我不可靠的 JSON 来说非常有用。对于 JSON 初学者来说是一个很棒的工具。
最佳答案
您应该对整个对象进行字符串化,请尝试以下操作:
var my_json_obj = json_obj_1;
$.each(json_obj_2, function(key,value){
my_json_obj[key]=value;
});
$.each(json_obj_3, function(key,value){
my_json_obj[key]=value;
});
Ajax 请求:
data: {my_json_data: JSON.stringify(my_json_obj)},
PHP:
print_r(json_decode($_POST['my_json_data']));
关于php - 使用 jQuery AJAX 将 JSON 对象传递给 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23310169/