在使用此功能时遇到一些麻烦,特别是使用$ .getJSON()。我想在javascript函数中包装来自jQuery的getJSON函数,如下所示:
function reload_data() {
$.getJSON("data/source", function(data) {
$.d = data;
});
}
但是当我调用reload_data()时,它不会执行里面的jQuery函数。有任何想法吗?
答案 0 :(得分: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();
});
}
答案 1 :(得分:2)
在函数旁边放置一个警报,以便知道它被调用。
并尝试捕获jQuery调用以查看是否存在错误
function reload_data() {
alert('reload_data start');
try{
$.getJSON("data/source", function(data) {
$.d = data;
});
}
catch (ex){
alert ('error in jQuery call:' + ex)
}
}
答案 2 :(得分:0)
感谢大家的帮助,但解决方案实际上非常简单。这只是一个同步的问题。在重新加载JSON数据之前页面正在重新加载,这就是我没有看到错误的原因。