如何从ajax中获取php中的数组

时间:2015-12-24 05:24:31

标签: javascript php arrays json

我在php中有这样的数组:

Array
(
    [week] => 15
    [showing] => present
    [ignore_team_id] => Array
        (
            [0] => 362
            [1] => 343
            [2] => 352
            [3] => 331
        )

    [event_pasted_team_id] => Array
        (
        )

    [old_data] => old_data
)

我希望从ajax中获取这个数组。 这就是我到目前为止所做的。

我只是将数组编码为json并使用json_encode();

将其保存在隐藏字段中
<input id='myArray' type='hidden' name="myArray" value='<?php echo json_encode($myArray);?>' /> 

在javascript中:

function ajaxloadPlage(outputId,dataTransfer){
            myArrayVal = jQuery('#myArray').val();
            strify = JSON.stringify(myArrayVal);
            jQuery.get( myapp.ajaxurl+'?'+dataTransfer,{action:'getPlayerRaterData','getArr':strify}, function( data ) {
            //business login goes here
                });
    }

回到PHP:

if($_GET['getArr']){
    $getArr = $_GET['getArr'];
    echo '<pre>';print_r($getArr);
}

它的印刷品如下:

\"{\\\"week\\\":15,\\\"showing\\\":\\\"present\\\",\\\"ignore_team_id\\\":[362,343,352,331],\\\"event_pasted_team_id\\\":[],\\\"old_data\\\":\\\"old_data\\\"}\"

如何获取有效数组?

2 个答案:

答案 0 :(得分:0)

你在发送过程中已经在json中对数组进行了编码,但是在后面的php中没有解码。 试试这个......

PHP:

<?php
if($_GET['getArr']){
    $getArr = $_GET['getArr'];
    echo '<pre>';print_r(json_decode($getArr));
}
?>

希望这能解决你的问题。

答案 1 :(得分:0)

myArrayVal已经是JSON字符串,您不需要致电JSON.stringify。您应该调用JSON.parse()将其转换为对象。然后$.get()会对对象进行URL编码,PHP会在设置$_GET['getArr']时对其进行解码。

function ajaxloadPlage(outputId,dataTransfer){
    myArrayVal = jQuery('#myArray').val();
    myArray = JSON.parse(myArrayVal);
    jQuery.get( myapp.ajaxurl+'?'+dataTransfer,{action:'getPlayerRaterData','getArr':myArray}, function( data ) {
        //business login goes here
    });
}