在jQuery ajax回调函数中访问数组值

时间:2012-11-19 21:31:08

标签: jquery

这实际上是一个简短的问题,关于获取由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}}如上所述,可以工作并显示所需的数据。

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显示在警告框中。

谢谢马丁,让我走上正轨。