这实际上是一个简短的问题,涉及获取由 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 调用的 success 函数中分解它时,我不知道如何获取这些值。我的尝试始终返回“未定义”值。
在 success 函数中,我尝试了以下方法来代替 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);
有人能看到我错过了什么吗?上述所有代码都紧接在 ajax 函数的成功回调中的 alert(data)
之后。 alert(data)
确实有效并显示所需的数据,如上所述。
最佳答案
好吧,Martin S 的答案是正确的。我希望他能留下来获得荣誉。他的回答只缺少一个要素:
AJAX 输出:
echo json_encode($aCard);
JAVASCRIPT成功回调函数:
var obj = jQuery.parseJSON(data);
alert(obj.date);
alert(obj.staff_id);
瞧!日期和 Staff_id 显示在警报框中。
谢谢马丁,让我走上正轨。
关于jquery - 在 jQuery ajax 回调函数中访问数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462595/