使用$ .getJSON()填充.data()

时间:2012-12-12 11:14:37

标签: javascript jquery

我正在尝试通过JSON填充$('div').data()。它适用于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 个答案:

答案 0 :(得分:5)

你可以这样做:

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

答案 1 :(得分:3)

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

你能不这样做吗?

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

答案 2 :(得分:3)

getJSON是一个非同步的ajax调用,所以函数本身不会返回任何内容,它只调用适当的回调,所以你可以这样做:

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

注意:$.get会将JSON检索为字符串,并且不会像getJSON那样解析它,因此如果要将JSON存储为字符串,请使用$.get。存储已解析的对象也可以正常工作(使用getJSON)。

答案 3 :(得分:2)

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

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

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

    $('div').data('dat', items)
});