通过Jquery post()返回多个值

时间:2017-09-20 14:18:27

标签: javascript php jquery json ajax

我已经通过$.post()从PHP脚本返回了2个日期。然后我试图将结果分解为两个变量(console.log下的注释掉的部分),而不是出现在一个变量中。

以下是jquery代码:

   $.post('api/displayDBSetTimes.php', function(data) {
    var obj = JSON.parse(data);
    var htmlToInsert = obj.map(function (item) {
     console.log(item.DB_ST);

     /* var db_st = item.DB_ST;
      var db_et = item.DB_ET;
      return db_st + " " + db_et;*/
      return item;

    });
    $('#oecd').html(htmlToInsert);
  });

PHP如下。我在发送JSON之前在PHP脚本中格式化了日期。在我用PHP格式化日期之前,上面注释掉的jquery代码工作了:

 <?php 
 include_once("../include/sessions.php");
 $select = "SELECT start_time AS DB_ST, end_time AS DB_ET FROM countdown WHERE tid = 1;";
     $query = mysqli_query($dbc, $select);

if($query){
    $out = array();
    while ($row = $query->fetch_assoc()) 
    {
        $out[] = date('D, m-d-Y H:i:s A', strtotime($row['DB_ST']));
        $out[] = date('D, m-d-Y H:i:s A', strtotime($row['DB_ET']));
    }

    // encode array as json and output it for the ajax script
    echo json_encode($out);
    }
   ?>

每当我尝试在jQuery $post()函数中引用PHP变量(即console.log中的item.DB_ST)时,它返回undefined,但是如果我删除了PHP变量引用,2个日期作为一个大字符串返回。我不希望这样。如果我引用数组的一部分,我不知道它为什么会返回undefined。

有人可以帮助我吗?对于像这样的事情,ajax()会更好吗?非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

您需要在PHP中使用关联数组,以实现键值对。

$out['DB_ST'] = date('D, m-d-Y H:i:s A', strtotime($row['DB_ST']));
$out['DB_ET'] = date('D, m-d-Y H:i:s A', strtotime($row['DB_ET']));

答案 1 :(得分:0)

在PHP文件中设置关联数组...

$out['DB_ST'] = date('D, m-d-Y H:i:s A', strtotime($row['DB_ST']));
$out['DB_ET'] = date('D, m-d-Y H:i:s A', strtotime($row['DB_ET']));

在您的$ .post中,您必须指明响应将采用JSON格式...

$.post('api/displayDBSetTimes.php', function(data) {

    /* Here you can access directly to data.DB_ST and data.DB_ET */

},'json');

我希望它有所帮助。