2

特に$.getJSON()を使用して、これを機能させるのに問題があります。jQueryのgetJSON関数を次のようなJavascript関数でラップしたいと思います。

function reload_data() {
    $.getJSON("data/source", function(data) {
        $.d = data;
    });
}

しかし、reload_data()を呼び出すと、内部でjQuery関数が実行されません。何か案は?

4

3 に答える 3

3

あなたは私たちに十分に話していません。推測してみます!

この関数を呼び出してすぐに $.d で結果を確認すると、非同期AJAX 要求が完了するまでの時間がないため、うまくいきません...

reload_data();
alert($.d); // What?!  It's not displaying the updated results?!

それを機能させるには、jQuery が使用するようなコールバック構造を利用する必要があります...

reload_data(function() {
  alert($.d);
});

function reload_data(func) {
  $.getJSON("data/source", function(data) {
    $.d = data;
    //Execute the callback, now that this functions job is done
    if(func)
      func();
  });
}
于 2009-07-01T19:35:41.553 に答える
2

関数の側に Alert を配置して、関数が呼び出されたことを認識します。

そして、エラーがあるかどうかを確認するための jQuery 呼び出しの周りの try catch

function reload_data() {
    alert('reload_data  start');
    try{
        $.getJSON("data/source", function(data) {
            $.d = data;
        });
     }
     catch (ex){
         alert ('error in jQuery call:' + ex)
     }
}
于 2009-07-01T14:18:46.157 に答える
0

皆さんの助けに感謝しますが、解決策は実際には本当に簡単でした. それは単に同期の問題でした。JSON データがリロードされる前にページがリロードされていたため、エラーは表示されませんでした。

于 2009-07-06T16:08:58.053 に答える