【发布时间】:2014-01-11 11:26:02
【问题描述】:
我使用ajax 调用从php 脚本中获取对象数组;但是,我无法从中获取嵌套对象。
openings 对象如下所示:
Object
2014-01-11: Array[5]
0: Object
appointments: "0"
name: "0"
openings: "1"
route_date: "2014-01-11"
__proto__: Object
1: Object
2: Object
3: Object
4: Object
length: 5
__proto__: Array[0]
2014-01-12: Array[5]
2014-01-13: Array[5]
2014-01-14: Array[5]
2014-01-15: Array[5]
2014-01-16: Array[5]
2014-01-17: Array[5]
2014-01-18: Array[5]
length; undefined appointment.js?ver=3.8:58
begin: 20140111 appointment.js?ver=3.8:59
end: 20140228
我尝试使用console.log("length; "+openings.length); 来获取返回的原始对象的长度,但它返回未定义。
这是我的 php 函数代码:
function get_available_times()
{
global $wpdb;
$begin = $_REQUEST['begin'];
$end = $_REQUEST['end'];
/*get time slots*/
$query = "
SELECT DISTINCT routes.route_date, time_slots.name, time_slots.openings, time_slots.appointments
FROM routes
INNER JOIN time_slots ON routes.route_id = time_slots.route_id
WHERE route_date
BETWEEN {$begin}
AND {$end}
ORDER BY route_date, name
";
$time_slots = $wpdb->get_results($query);
/*organize slots into array*/
$openings = array();
foreach($time_slots as $ts)
{
if(empty($openings))
{
$openings[$ts->route_date][$ts->name] = $ts;
}
elseif (array_key_exists($ts->route_date, $openings))
{
$openings[$ts->route_date][$ts->name]=$ts;
}
else
{
$openings[$ts->route_date][$ts->name] = $ts;
}
}
/*return results*/
$result['openings'] = $openings;
$result['time'] = $time_slots;
$result['begin'] = $begin;
$result['end'] = $end;
$result['query'] = $query;
$result['type'] = "success";
$result = json_encode($result);
echo $result;
die();
}
这是我正在使用的 Javascript 代码:
$.ajax({
type: "post",
dataType: "json",
url: ajaxurl,
data:{action: "get_available_times", begin: begin, end:end},
success: function(response){
if(response.type == "success"){
console.log("testing");
var openings = response.openings;
console.dir(openings);
console.log("length; "+openings.length);
console.log("begin: "+response.begin);
console.log("end: "+response.end);
}
}
});
所有这一切的重点是我希望能够遍历每个日期并将值放入 HTML。
【问题讨论】:
-
你只想要日期吗?
-
不,我想要日期对象中每个对象的
name值,如果这有意义的话。对于每一天,我都需要将所有对象名称值放入 DOM。 -
@ArunPJohny 这不会影响我正在做的事情。它不起作用。你说的不对
-
@Blaine 抱歉,看来我看错了...
-
虽然
begin和end是持有其他键的变量
标签: javascript php jquery arrays object