2

我正在尝试$('div').data()通过 JSON 填充。它适用于JQuery.parseJSON但不适用于$.getJSON.

// works as expected
$('div').data('dat', { xmin: '-10', xmax: 40 });
$('div').data('dat', jQuery.parseJSON('{"bbx" : {"xmin" : "-10", "xmax" : "40"}}'));

// doesnt work
$('div').data('dat', $.getJSON("init.php", function(json) {return(json);}));
4

4 回答 4

5

你可以这样做:

$.getJSON("init.php", function(json) {
    $('div').data('dat', json);
});
于 2012-12-12T11:18:35.897 回答
3

可能是因为 getJSON 是一个异步操作。到您的成功函数执行时,原始语句现在已超出范围。

你不能这样做吗?

$.getJSON("init.php", function (json) {
    $('div').data('dat', json);
});
于 2012-12-12T11:19:03.180 回答
3

getJSON是一个异步的ajax调用,所以函数本身不返回任何东西,它只是调用适当的回调,所以你可以这样做:

$.getJSON("init.php", function(json){
    $('div').data('dat', json);
})

注意:$.get会将 JSON 作为字符串检索,并且不会getJSON$.get. 存储解析的对象也可以(通过使用getJSON)。

于 2012-12-12T11:25:15.493 回答
2

您还可以以数组格式存储数据:

$.getJSON('init.php', function(data) {
    var items = [];

    $.each(data, function(key, val) {
        items.push(val);
    });

    $('div').data('dat', items)
});
于 2012-12-12T11:31:55.807 回答