使用从 jQuery $.post 返回的数组


Use returned array from jQuery $.post

我有一个简单的代码,可以在数据库中切换两个值并将它们返回给jQuery,因此我可以为用户切换它们而无需刷新apge。

问题是,我将其作为数组返回,控制台.log显示数组正常,但我不知道如何从数组中获取数据。

通过PHP返回:

$data = array($id, $img1, $img2);
echo json_encode($data);

j查询:

$.post("bg_images_ajax.php", "switch=yes&id="+id).done(function(data){
    $("#image-left-"+id).attr("src", "/images/backgrounds/"+data[1]).attr("alt", data[1]);
    $("#image-right-"+id).attr("src", "/images/backgrounds/"+data[2]).attr("alt", data[2]);
    console.log(data);
});

data[1] 几乎每次我使用 Ajax 时都有效,但在这里看起来它将整个返回的数组作为一个简单的字符串(data[2] 返回 6,这是 console.log 返回的数组 ["6"、"blabla"、"blalablala"] 中的第三个字符)。

我试图将数组返回为:

["id" = "6", "img1" = "blabla", "img2" = "blalablala"]

并使用它来获得我需要的东西:

data.img1

但这只返回未定义。

我检查了关于 jQuery.post http://api.jquery.com/jquery.post/的页面但我要么是盲人,要么就是太累了,因为我看不出我做错了什么。

Ps.:我也尝试将响应格式放入jQuery代码,但它不起作用(因为我不太确定确切地放置它,尝试了两个地方,如此处所示(不是同时))。

$.post("bg_images_ajax.php", "switch=yes&id="+id, "json").done(function(data){
    $("#image-left-"+id).attr("src", "/images/backgrounds/"+data[1]).attr("alt", data[1]);
    $("#image-right-"+id).attr("src", "/images/backgrounds/"+data[2]).attr("alt", data[2]);
    console.log(data);
}, "json");

PHP 缺失

header("Content-Type: application/json");

并默认发送text/html .

jQuery将结果视为(无效的)HTML字符串,而不是将JSON解析为预期的数据结构。


此外,如果你想要一个对象(具有命名属性)而不是一个数组(由数字索引访问),那么你必须从 PHP 中的关联数组开始:

$data = array("id" => $id, "img1" => $img1, "img2" => $img2);