如何json编码两个数组并在ajax

时间:2016-09-25 11:41:48

标签: javascript php jquery json ajax

这是我想要做的。我想检索所有具有特定参考编号的名称和细节。所以我正在使用while循环。但我不知道我如何编码这些值并检索它们,以便我可以在ajax中使用它们显示它们。另一个问题是我已经有一个json编码的数组,我想要检索这些值。所以我想使用json编码检索两个数组。 这是代码 -

$sql = "SELECT *  From (select * from tran ORDER BY id  DESC LIMIT 1) AS name  ORDER BY id LIMIT 1";
$result = mysqli_query($conn,$sql);
$rows1 = mysqli_fetch_assoc($result);

$master_ref_no = $rows['master_tran_ref'];
$sql = "SELECT * FROM stk WHERE tran_ref = '$ref_no'";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_assoc($result)){
    $name = $row['name'];
    $tot = $row['tot'];
    $data[] = ["pname" => $name,"ptot"=>$tot];//but i dont know how do i retrieve this and use it in ajax.
}

$response = ["success" => true, "date" => $rows1['date'], "v_no" => $rows1['v_no'], "types" => $rows1['v_type']]; // this is working perfectly fine.  

header('Content-type: application/json');
echo json_encode($response); 

这就是我在ajax中使用它来在html表中显示的方式 -

$.ajax({
   type: "POST",
   url: "demopost.php",
   data: formData,
   success: function(response){   
        if (response.success) {
            $('#datepreview').val(response.date);
            $('#v_nopreview').val(response.v_no);
            $('#typepreview').val(response.types);
            $('#entrysavedmodal').modal('show');
        } else {
            alert("failure in");
        }
    },
    error: function(){
        alert("failure out");
    }
});

所以,请帮助我如何json编码从while循环中检索到的所有值,并将它们与其他数组一起包含,即。响应并在ajax中使用它们。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

JSON数组也可以是多维的,因此您可以将$data数组放入$results并将其传递给它,如下所示:

$response = ["data" => $data, "success" => true, "date" => $rows1['date'], "v_no" => $rows1['v_no'], "types" => $rows1['v_type']];

然后你的输出会有这样的结构:

{
    data: {
        0: {
            pname: value1
            ptot: value2
        },
        1: {
            pname: value3
            ptot: value4
        }
    },
    success: true,
    //rest of values here
}

因此,要访问value3,您的jQuery看起来像

results.data.1.pname

然后,您可以遍历results.data级别以获取所有pname / ptot对,或者在编码之前在PHP代码中对其进行重组。