我通过Ajax将Json数组对象传递给PHP文件,但我不知道如何接收它并在PHP中循环数据。
以下是我将目标命名为主数据的方法:
stringified as json object
var main_data = ["landing_page_id","1",
"element",{"workbook_id":15,"workbook":[10,11]},
"element",{"workbook_id":15,"workbook":[10,11]}]
这是我的Ajax代码:
$.post('services/addUpdateLandingPage.php', main_data, function(msg)
{
alert(msg);
}, 'json');
而且,这是我的PHP代码:
$data = $_POST['main_data'];
echo 'this is data'.$data;
但是,我不知道如何从PHP文件中访问数据以及如何遍历每个项目?
答案 0 :(得分:0)
我认为你的JSON应该是这样的:
{ “landing_page_id”: “1”, “元件”:[{ “workbook_id”:15, “工作簿”:[10,11]},{ “workbook_id”:15, “工作簿”: [10,11]}]}
在PHP代码中,您可以获得如下元素数据:
$jsonArray = json_decode($_POST['main_data'],true);
foreach($jsonArray['elements'] as $element){
echo $element['workbook_id'];
echo $element['workbook'][0];
echo $element['workbook'][1];
}
如果你不想改变你的json数据,你可以获得如下元素:
$jsonArray = json_decode($_POST['main_data'],true);
$isElement = false;
foreach($jsonArray['elements'] as $element){
if($element == "element"){
$isElement = true;
}else if($isElement && is_array($element)){
echo $element['workbook_id'];
echo $element['workbook'][0];
echo $element['workbook'][1];
$isElement = false;
}
}
答案 1 :(得分:0)
由于您通过Ajax传递json数据,因此您需要在PHP中对其进行解码以获取传递的数据。
$array = json_decode($main_data,true); // will output json string to array
循环上面的数组以获取单个数据
foreach($array as $key=>$value){
echo $value;
// if $value is array loop again
}
您的json数据似乎没有正确的结构。考虑一下Tarun在他的回答中提到的结构。