在ajax调用中访问从服务器以json格式发送的数据

时间:2014-12-06 13:49:35

标签: jquery ajax

我正在使用ajax调用,并且无法检索和使用服务器发送的数据。 从服务器上,我发送了这个:

$details["name"]=$name;
$details["cat"]=$category;
$details["price"]=$price;
$details["quant"]=$quantity;
$details["img"]=$image_url;
echo json_encode($details);

这是客户端的ajax调用:

$.ajax({
    type:'post',
    url:'update.php',
    data: {data:id},
    success: function(data){
        alert(data);
        var x=JSON.parse(data);
        alert(x);
    }
});

我希望能够访问$ details [" name"]等等但是当我在ajax成功函数中发出警报(数据)时,它会提醒正确的信息,即{" name& #34;:" xyz"," cat":3 ...}。但是,当我执行alert(x)时,它会显示[object Object]。如果我访问x [" name"],则表示未定义。 有谁可以指出这个问题?

2 个答案:

答案 0 :(得分:2)

解析响应后, JSON字符串将成为 JavaScript对象。

在您的情况下,警报显示Object,因为您包含整个对象名称。

要获得所需的媒体价值,您必须使用ObjectName.PropertyName,在您的情况下x.name

以下是 Fiddle ,以便您更好地理解。

答案 1 :(得分:1)

您可以更直接地使用JSON .... http://api.jquery.com/jquery.getjson/

$.getJSON({
    type:'post',
    url:'update.php',
    data: {data:id},
    success: function(details){
        console.log(details, details.name);
    }
});

试试吧。数据应该已经解析为JSON。

此外,我使用alert而不是console.log,而这是最好的方法。非常值得学习。