如何浏览PHP程序从Ajax发送的Json数据?

如何浏览PHP程序从Ajax发送的Json数据?,php,json,ajax,data-structures,Php,Json,Ajax,Data Structures,我通过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"

我通过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文件中的数据以及如何循环每个项目?

我认为您的JSON应该如下所示:

{“登录页面id”:“1”,“元素”:[{“工作簿id”:15,“工作簿”:[10,11]},{“工作簿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];
}
$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; 
       }
    }
如果您不想更改json数据,您可以获得如下元素:

$jsonArray = json_decode($_POST['main_data'],true);
foreach($jsonArray['elements'] as $element){
    echo $element['workbook_id'];
    echo $element['workbook'][0];
    echo $element['workbook'][1];
}
$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; 
       }
    }

由于您通过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在他的回答中提到的结构。

如何处理$XPOST数据:(是的,您做Ajax,但是处理$xPOST的方法是相同的),以及如何循环通过数组:如何在PHP中处理JSON:解决方案似乎不起作用我尝试过PHP返回,但没有输出您是否更改了JSON?我在PHP中收到了这个对象如何在PHP中循环