JSON AJax PHP无法在php

时间:2016-07-27 15:58:44

标签: php json ajax

我有一些问题能够在PHP中看到数组变量回显,我尝试过很多东西,我知道数组是通过JSON和stringify版本发送到PHP文件的。

我可以将数据写入日志文件,并在变量文件中显示数据:$ datastripped如下

{"supplements":[{"supplement":"1","dose":"2","dosewieght":"mg"}]}

无论我如何编码,$ data变量都不会写入日志文件。

我尝试了$ data,$ data [0],$ data [0] ['supplement'],$ data ['补充'] ['补充']以及许多其他组合。

我在JSON上找到的信息以及对其他人有用的信息似乎对我不起作用。

***我也在WordPress中这样做,但已经验证数据正确到达php函数,但无法回显单个项目

这是Javascript:

var supplist = {supplements:[]};
supplist.supplements.push({supplement:supplement, dose:dose, dosewieght:doseweight});

$( "#supplementsave" ).click(function(){
    var jsonsupparray = JSON.stringify(supplist); 


        event.preventDefault();
        jQuery.ajax({
                type: "POST",
                dataType:"JSON",
                url: myajax.ajax_url,
                data:{

                        data:jsonsupparray,
                        action: "addsupplements"            
                },
                cache:false,
                success: function(data){
                console.log("success");
                },

    });

这是PHP:

$datastripped =stripslashes($_POST['data']);

$data = json_decode($datastripped, true);   //Data Not Beign shown

foreach($data as $value){

echo $value['supplement'];

}

2 个答案:

答案 0 :(得分:3)

当您在支持列表中推送数据时,还需要输入单引号。

supplist.supplements.push({'supplement':'supplement', 'dose':'dose', 'dosewieght':'doseweight'});

否则会抛出javascript错误,补丁未定义,因为它将补充视为变量,而不是字符串。

现在在你的php代码中你需要解码你的json并迭代。

答案 1 :(得分:1)

就是这样

<?php
    $datastripped = '{"supplements":[{"supplement":"1","dose":"2","dosewieght":"mg"}]}';
    $data = json_decode($datastripped, true);
    // print_r($data['supplements']);
    foreach ($data['supplements'][0] as $key => $value) {
        echo $key.' '.$value.'<br>';
    }
?>

你会得到

supplement 1
dose 2
dosewieght mg

如果你想调用一个参数

echo $data['supplements'][0]['supplement'];
echo $data['supplements'][0]['dose'];
echo $data['supplements'][0]['dosewieght'];