在AJAX Success上将多个PHP数组传递给JavaScript

时间:2013-04-14 16:49:58

标签: php javascript ajax

我很难使用AJAX请求将数组从PHP页面传递给JavaScript。

我必须将来自多个php数组的信息传递给javascript。我知道我可以使用json_encode,但是,我很难实现这个。 $name数组似乎没有被传递,此外,我将需要将所有数组传递给javascript而不仅仅是$name

我很欣赏这方面的任何建议。

非常感谢提前!

这是我尝试传递$name数组(代码片段):

PHP

while($row2 = mysqli_fetch_array($results2)){
    $name[$i] = $row2['prod_name'];
    $price[$i] = $row2['price'];
    $upc[$i] = $row2['upc'];
    $quantity[$i] = $row2['quantity'];
}
echo json_encode($name);

AJAX

$.ajax({
    url: "invoice-get-data.php?hotItems=1&getArrays=1",
    dataType: "json",
    success: function(data){
        alert(data[0]);
    }
});

2 个答案:

答案 0 :(得分:2)

后端:

while($row2 = mysqli_fetch_array($results2)){
    $name[] = $row2['prod_name'];
    $price[] = $row2['price'];
    $upc[] = $row2['upc'];
    $quantity[] = $row2['quantity'];
}
echo json_encode(array($name, $price, $upc, $quantity));

前端:

$.ajax({
    url: "invoice-get-data.php?hotItems=1&getArrays=1",
    dataType: "json",
    success: function(data){
        data = JSON.parse(data);
        alert(data[0]);
    }
});

答案 1 :(得分:0)

$ i似乎没有在while循环中更改,因此最后一个值不断被新值覆盖。你可以使用:

$name = array(); //setup array
while($row2 = mysqli_fetch_array($results2)){
    $name[] = $row2['prod_name']; //add to the end of the array
}
echo json_encode($name);

您也可以使用'die'来回显您的HTML代码,以确保之后没有其他任何内容被执行die(json_encode($name));

并且您的jquery返回变量data,因此请使用data

$.ajax({
    url: "invoice-get-data.php?hotItems=1&getArrays=1",
    dataType: "json",
    success: function(data){
        alert(data[0]);
    }
});