使用Javascript函数调用jQuery函数
在实现此功能时遇到一些问题,特别是在使用$.getJSON()时。我想将jQuery中的getJSON函数封装在Javascript函数中,如下所示:使用Javascript函数调用jQuery函数,javascript,jquery,json,function,getjson,Javascript,Jquery,Json,Function,Getjson,在实现此功能时遇到一些问题,特别是在使用$.getJSON()时。我想将jQuery中的getJSON函数封装在Javascript函数中,如下所示: function reload_data() { $.getJSON("data/source", function(data) { $.d = data; }); } 但是当我调用reload_data()时,它不会在内部执行jQuery函数。有什么想法吗 在函数中添加一个警报,以了解其被调用的情况 并尝试捕获
function reload_data() {
$.getJSON("data/source", function(data) {
$.d = data;
});
}
但是当我调用reload_data()时,它不会在内部执行jQuery函数。有什么想法吗 在函数中添加一个警报,以了解其被调用的情况 并尝试捕获jQuery调用以查看是否存在错误
function reload_data() {
alert('reload_data start');
try{
$.getJSON("data/source", function(data) {
$.d = data;
});
}
catch (ex){
alert ('error in jQuery call:' + ex)
}
}
你告诉我们的还不够。我就猜一猜 如果您正在调用此函数,然后立即检查$.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();
});
}
谢谢大家的帮助,但解决方法其实很简单。这只是一个同步的问题。在重新加载JSON数据之前,页面正在重新加载,因此我没有看到错误 你怎么知道它没有执行这个函数?你在里面的线路上放了一个断点来检查吗?它执行得很好。我想这一定是因为$.d变量中的数据没有以脚本其他部分可以使用的方式刷新。你没有向我们展示足够的图片来给出准确的答案。顺便问一下,你为什么要将“d”变量挂在jQuery命名空间上?是的,这也是我的猜测。这就是为什么我问他是否确定函数没有被调用。毕竟,Ajax是异步的,这就引出了一个有趣的问题。我认为他可以将他的请求更改为同步,这可能会解决问题,尽管我认为这不是最好的解决方案,所以我将保留我的答案。无论是哪种方式,他都必须等待ajax的执行,然后才能对变量做任何事。我认为(但我不确定)如果调用保持异步,浏览器的UI将更具响应性。异步请求是平滑的,同步请求会导致浏览器挂起。