我已经通过$.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()
会更好吗?非常感谢帮助。
答案 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');
我希望它有所帮助。