我正在尝试通过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);}));
答案 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)
});