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);
})

注:$.getJSONを文字列として取得し、とは異なり解析しないgetJSONため、JSONを文字列として保存する場合は、を使用します$.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 に答える