使用JavaScript数组推送php json数组

使用JavaScript数组推送php json数组,php,jquery,arrays,json,Php,Jquery,Arrays,Json,我想使用jQueryAjax将从Php页面获得的数组推送到javascript数组中。我试过下面的代码 它的输出像 {"id":12,"name":"some-one"},{"id":1,"name":"john"}{"id":2,"name":"willy"}{"id":3,"name":"keith"} 我想要的是,数组的结构应该是这样的 {"id":12,"name":"some-one"},{"id":1,"name":"john"},{"id":2,"name":"willy"},{

我想使用jQueryAjax将从Php页面获得的数组推送到javascript数组中。我试过下面的代码

它的输出像

{"id":12,"name":"some-one"},{"id":1,"name":"john"}{"id":2,"name":"willy"}{"id":3,"name":"keith"}
我想要的是,数组的结构应该是这样的

{"id":12,"name":"some-one"},{"id":1,"name":"john"},{"id":2,"name":"willy"},{"id":3,"name":"keith"}
我已经把代码写在下面了,请帮我找其他人

index.php

var arrs =[];
arrs.push(JSON.stringify({'id':12,'name':'some-one'}));
$.ajax({
    type:'POST',
    url:'my_arr_call.php',
    success:function(data){
        arrs.push(data);
        alert(arrs);

    }
});
my_arr_call.php

<?php 
$my_arr = array(
    array('id'=>1,'name'=>'john'),
    array('id'=>2,'name'=>'willy'),
    array('id'=>3,'name'=>'keith')
);

foreach($my_arr as $v){
    $my_arrs = $v;
    print json_encode($my_arrs);
}



?>

问题在于,当您在数组中循环并逐个打印每个元素时。您可以只打印/回显整个数组(永远不要忘记json_编码)来保留结构

<?php 
$my_arr = array(
    array('id'=>1,'name'=>'john'),
    array('id'=>2,'name'=>'willy'),
    array('id'=>3,'name'=>'keith')
);

echo json_encode($my_arr);
?>

下面的代码工作得很好,正如我所期望的

var arrs =[];
    arrs.push({'id':12,'name':'some-one'});
    var str_ar1 = JSON.stringify(arrs);
$.ajax({
    type:'POST',
    url:'my_arr_call.php',
    success:function(data){
        var all_arrs = JSON.stringify(JSON.parse(str_ar1).concat(JSON.parse(data)));
        alert(all_arrs);
    }
});
如我所料,它输出正确

[{"id":12,"name":"some-one"},{"id":1,"name":"john"},{"id":2,"name":"willy"},{"id":3,"name":"keith"}]
谢谢。

尝试
arrs.concat(数据)
而不是
arrs.push(数据)
而不仅仅是“你可以”。。每个请求“必须”只回显一个数组
[{"id":12,"name":"some-one"},{"id":1,"name":"john"},{"id":2,"name":"willy"},{"id":3,"name":"keith"}]