如何在AJAX的POST方法中访问php数组,将数组传递给另一个文件?

时间:2012-12-04 06:06:16

标签: php javascript ajax jquery

我有一个php文件,其中包含如下数组。

 $selectShiftarray = array();
$shift=$_POST['selectShift'];

if ($shift)
{
    foreach ($shift as $value)
    {
        array_push($selectShiftarray,$value);
    }
}

我需要访问AJAX中的$ selectShiftarray,将值传递给另一个php文件。

$.ajax({
    type: 'POST',
    url: '../c/sampleTest.php', //data: {data = <?php $POST['selectShift'] ?> },//"id=78&name=Allen",
    dataType: 'json',

    success: function (json) {
        //alert('successful');
        $.plot($("#placeholder"), json, {
            series: {
                stackpercent: true,
                bars: {
                    show: true,
                    barWidth: 0.6,
                    align: "center"
                }
            },
            xaxis: {
                tickSize: 1
            },
            yaxis: {
                max: 100,
                tickFormatter: function (v, axis) {
                    return v.toFixed(axis.tickDecimals) + '%'
                }
            }
        });
    }
});

我试图将AJAX数据库中的数组值传递给sampleTest.php来执行计算。

如果我直接在两个php文件之间传递数组值,我想在当前的php文件中包含sampleTest.php。我的要求是,我不应该在任何php文件中包含sampleTest.php文件,因此我选择了AJAX的POST方法。但我无法将数组传递给sampleTest.php文件。由于我是AJAX的新手,我无法解决这个问题。任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

将$ selectShiftarray数组打印成AJAX代码,通过AJAX将其发送到../c/sampleTest.php:

function sendArrayToPHP(phpFile, parameterName, jsArray) {
    $.ajax({
        url: phpFile,
        async: false, // Depending on what you want
        type: "POST",
        data: { parameterName : JSON.serialize(jsArray) }
    }).done(function( data ) {
        // Sent!
    });
}

var arrayExample = $.parseJSON("<?=$selectShiftarray?>"); // This way
// You can modify here the array if you want using JavaScript
sendArrayToPHP("../c/sampleTest.php", "arrayParameter", arrayExample);

从../c/sampleTest.php接收数组(解码JSON):

$selectShiftArray = json_decode($_POST['arrayParameter'], true);

答案 1 :(得分:0)

感谢axelbrz和Bergi的指导帮助我解决了这个问题,这对我来说很有用,

这是我在Controller中的AJAX代码:

 <script type="text/javascript">
    $(document).ready(function(){

    var jsonobj = <?php echo json_encode($selectShiftarray); ?>;


    $.ajax({type:'POST',url:'../c/sampleTest.php', data :  { shift : jsonobj } ,
    dataType: 'json',

    success:function(json){
    //alert('successful');
    $.plot($("#placeholder"), json, {
    series: {
        stackpercent: true,
        bars: { show: true, barWidth: 0.6, align: "center" }
    },
        xaxis: {tickSize : 1},
        yaxis:{max:100, tickFormatter: function(v,axis){ return v.toFixed(axis.tickDecimals)+'%'}}
    });
 }
 });
 });

</script>
<div id="placeholder" style="width:600px;height:300px; top: -401px; left: 500px;">
</div>

我的sampleTest.php代码,它接收控制器发送的数组并对其进行处理。

$selectShiftarray = array();
$shift=$_POST['shift'];

if ($shift)
{
    foreach ($shift as $value)
    {
        array_push($selectShiftarray,$value);
    }
}