jQuery从PHP获取json_encode变量

时间:2016-07-28 09:14:27

标签: php jquery

我的PHP文件从PostgreSQL数据库中检索数据。我必须将它们发送回两个不同数组的jQuery函数。一个是通过使用:

echo json_encode($tb);

并且工作正常,在我的js文件中我通过使用正确获取数据:

 $.ajax({
    type: "POST",
    url: './DB/lb.php',
    data: {d_p: oa},
    success: function (tb) {
      console.log(tb);
})

控制台输出正如预期的那样。

另一个总是PHP数组,但我必须替换字符:

str_replace(array('[', ']'), '', htmlspecialchars(json_encode($ltb), ENT_NOQUOTES));

但如果我写:

 $.ajax({
    type: "POST",
    url: './DB/lb.php',
    data: {d_p: oa},
    success: function (tb, ltb) {
      console.log(tb);
      console.log(ltb);
})

console.log(ltb)只输出

  

成功

我错了什么?

2 个答案:

答案 0 :(得分:0)

succes的第二个参数是响应状态。这是因为您在记录success时获得tlb

您一次只能返回一个JSON,因此请将它们合并:

echo json_encode(array("other stuff", "tb" => $tb, "tbl" => array("some" => "data")));

在JS方面,您可以通过索引或键轻松访问它们:

tb[0];  // "other stuff"
tb.tb;  // content of $tb variable
tb.tbl; // {some: "data"}

答案 1 :(得分:0)

最终工作代码:

<强> PHP:

$tb = array();
$ltb = array();
    while ($row = pg_fetch_array($result, NULL, PGSQL_ASSOC))
    {
      array_push($ltb, $row["x"], $row["y"]); 
      array_push($tb, $row["z"],$row["t"]);
    } 

    echo json_encode(array('tb'=>$tb,'ltb'=>$ltb));

<强> JS

$.ajax({
    type: "POST",
    url: './DB/lb.php',
    dataType: 'json', // this is what I forgot!!!
    data: {d_p: oa}, // passes variable for PHP function
success: function (response) {
        console.log(response.tb+" "+ response.ltb);
$.each(response.tb, function( i, item ) {
  // iterate over tb array
}
$.each(response.ltb, function( i, item ) {
  // iterate over ltb array
}
});