特に$.getJSON()を使用して、これを機能させるのに問題があります。jQueryのgetJSON関数を次のようなJavascript関数でラップしたいと思います。
function reload_data() {
$.getJSON("data/source", function(data) {
$.d = data;
});
}
しかし、reload_data()を呼び出すと、内部でjQuery関数が実行されません。何か案は?
特に$.getJSON()を使用して、これを機能させるのに問題があります。jQueryのgetJSON関数を次のようなJavascript関数でラップしたいと思います。
function reload_data() {
$.getJSON("data/source", function(data) {
$.d = data;
});
}
しかし、reload_data()を呼び出すと、内部でjQuery関数が実行されません。何か案は?
あなたは私たちに十分に話していません。推測してみます!
この関数を呼び出してすぐに $.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();
});
}
関数の側に 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)
}
}
皆さんの助けに感謝しますが、解決策は実際には本当に簡単でした. それは単に同期の問題でした。JSON データがリロードされる前にページがリロードされていたため、エラーは表示されませんでした。