0

可能重复:
我有一个嵌套的数据结构/JSON,我怎样才能访问一个特定的值?

基本上我有一个像这样返回的 json 对象:

"products":[
    {
        "id": "21102165",
        "name": "Eliza J (3/4 sleeve ruched waist dress)",
    }]

我的显示方法:

function getCart(){
var json = $.getJSON('https://'+storedomain+'/cart?'+fcc.session_get()+'&output=json&callback=?');
alert(json['name']);
}

但是警报显示“未定义”。我在哪里做错了?

谢谢

4

3 回答 3

4

$.getJSON return $.Deferred object and not a result

function getCart(){
    $.getJSON('https://'+storedomain+'/cart?'+fcc.session_get()+'&output=json&callback=?', function(data) {
        console.log(data.products[0].name);
    });
}

you can do:

function getCart(){
    return $.getJSON('https://'+storedomain+'/cart?'+fcc.session_get()+'&output=json&callback=?');
}  

$.when(getCart()).then(function(data) {
    console.log(data.products[0].name);
});
于 2013-01-24T14:42:21.933 回答
0

使用成功回调。

var jqxhr = $.getJSON("example.json", function(data, textStatus, jqXHR) {
  alert("success");
})
.success(function(data, textStatus, jqXHR) { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

请参阅getJSON的 API 文档。

于 2013-01-24T14:44:38.323 回答
0

你的方法应该是:

function getCart(callback) {
    var url = 'https://'+storedomain + '/cart?'+fcc.session_get()+'&output=json&callback=?';
    $.getJSON(url, callback);
}

// Usage
getCart(function(data) {
    console.log(data.products); // array of car objects
});

或者您可以使用 salexch 回答中解释的延迟对象。

您应该熟悉 AJAX 请求的异步特性和回调函数。

于 2013-01-24T14:48:47.330 回答