这实际上是一个简短的问题,关于获取由 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 脚本发出了正确的数据,并在成功函数的 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);
我错过了什么?
更新:
感谢 Martin S. 提供有关 json_encode() PHP 指令的信息。我修改了ajax脚本如下:
echo json_encode($aCard);
我现在从警报(数据)中得到这个结果;在成功函数中:
{"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);
谁能看到我错过了什么?上面的所有代码都紧跟在alert(data)
ajax 函数的成功回调之后。alert(data)
确实可以工作并显示所需的数据,如上所述。