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

时间:2017-10-26 16:52:02

标签: 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":[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文件中访问数据以及如何遍历每个项目?

2 个答案:

答案 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在他的回答中提到的结构。