这实际上是一个简短的问题,关于获取由PHP脚本回应并由Javascript接收/处理的数组的值。
问题的开头应该为有人回答提供足够的信息;我的各种失败的实验弥补了这个冗长问题的其余部分。
通过jQuery AJAX回调接收数组,但是我没有成功获取值。
这是ajax电话:
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=edit_timecard_entry&staff_id='+staff_id+'&tid='+tid,
success: function(data){
alert(data);
}
}
这是ax_all_ajax_fns.php发出的代码:
$staff_id = $_POST['staff_id'];
$t_id = $_POST['tid'];
$rCard = mysql_query("SELECT `staff_id`, `date`, `project_id`, `project_num`, `task_desc`, `hours` FROM `timecards` WHERE `t_id`='$t_id'");
$aCard = mysql_fetch_assoc($rCard);
print_r($aCard);
// echo $aCard;
当然,我不希望print_r'd信息,我想要它回应。 print_r用于演示PHP脚本发送的正确数据,并在success函数的alert()框中成功回显。因此返回正确的数据,并且(如果格式正确)它是可见的。以这种方式返回的数据在alert()弹出窗口中如下所示:
Array
(
[staff_id] => 51
[date] => 2012-10-18
[project_id] => 0
[project_num => 49
[task_desk] => This is a task
[hours] => 3.30
)
但是当我使用echo输出$ aCard数组然后尝试在ajax调用的成功函数内将其分解时,我无法弄清楚如何获取值。我的尝试一直返回“未定义”的值。
在成功函数中,我尝试了alert(data);
代替var tce_staff_id = data['staff_id'];
alert(tce_staff_id);
:
var tce_staff_id = data.staff_id;
alert(tce_staff_id);
和此:
echo json_encode($aCard);
我错过了什么?
更新:
感谢Martin S.获取有关json_encode()PHP指令的信息。我修改了ajax脚本如下:
{"staff_id":"51","date":"2012-10-18","project_id":"0","project_num":"49","task_desc":"This is a task","hours":"3.30"}
我现在从警报(数据)获得此结果;在成功函数中:
alert(data.staff_id);
alert(data[0].staff_id);
var test = data.staff_id;
alert(test);
但是,以下内容返回“undefined”:
alert(data)
任何人都能看到我错过的东西吗?以上代码在ajax函数成功回调中的alert(data)
之后立即出现。 {{1}}如上所述,可以工作并显示所需的数据。
答案 0 :(得分:3)
好吧,马丁S得到了正确答案。我希望他能坚持下去。他的回答只缺少一个因素:
AJAX OUTPUT:
echo json_encode($aCard);
JAVASCRIPT成功回调函数:
var obj = jQuery.parseJSON(data);
alert(obj.date);
alert(obj.staff_id);
瞧!日期和staff_id显示在警告框中。
谢谢马丁,让我走上正轨。