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

标签 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 调用的 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/

相关文章:

javascript - 主干验证插件不验证

javascript - 如何从 JavaScript 禁用 Bootstrap 日期选择器

javascript - jQuery循环插件切换到另一个选项卡后停止滑动

javascript - 动画期间位置不正确

javascript - jQuery 调用 keyup 事件不起作用

javascript - 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

javascript - 未捕获的类型错误 : Cannot read property 'keys' of undefined

javascript - 获取C#数据表的Json字符串并在jquery数据表中显示

jquery - Bootstrap 轮播不滑动

javascript - 使用 JSON 创建数组