Javascript 为什么用下面的JS代码调用两个ajax请求?
我有以下代码从服务器中提取数据。我想在document.ready上调用它。我希望向服务器发出第一个请求,得到响应,然后发出第二个请求,依此类推 但我在Firebug中看到,在初始页面加载时向服务器发出了两个请求。我不知道为什么有两个要求。 这是我的密码Javascript 为什么用下面的JS代码调用两个ajax请求?,javascript,jquery,ajax,long-polling,Javascript,Jquery,Ajax,Long Polling,我有以下代码从服务器中提取数据。我想在document.ready上调用它。我希望向服务器发出第一个请求,得到响应,然后发出第二个请求,依此类推 但我在Firebug中看到,在初始页面加载时向服务器发出了两个请求。我不知道为什么有两个要求。 这是我的密码 ;var EVENTS = {}; ;(function($) { EVENTS.Collector = { events: [], getEventsData: function() { var postData = {
;var EVENTS = {};
;(function($) {
EVENTS.Collector = {
events: [],
getEventsData: function() {
var postData = {
'jsonrpc': '2.0',
'id': RPC.callid(),
'method': "events.getNewOrUpdated",
'params': {},
'auth': RPC.auth()
};
var events_request = $.ajax({
url: RPC.rpcurl(),
contentType: 'application/json-rpc',
type: "POST",
data: JSON.stringify(postData),
timeout: 30000
});
events_request.done(function(results) {
//console.log("Info " + results);
if (results.result.result !== null) {
if (EVENTS.Collector.events.length !== 0) {
alert(EVENTS.Collector.events.length);
} else {
alert(EVENTS.Collector.events.length);
}
}
});
events_request.fail(function(results) {
//console.error("Error " + results);
$("Error Message").insertAfter('.error');
});
events_request.always($.proxy(this.getEventsData, this));
}
};
})(jQuery);
EVENTS.Collector.getEventsData(); //function call
提前感谢如果删除下面的代码,它会调用吗
EVENTS.Collector.getEventsData(); //function call
默认情况下,ajax请求是异步的。如果您希望每个请求在完成之前都是阻塞的,那么继续下一步,您可以通过向ajax调用参数添加async:false来发送同步请求 试一下下面的代码片段,如果它是你想做的
var events_request = $.ajax({
url: RPC.rpcurl(),
contentType: 'application/json-rpc',
type: "POST",
async: false,
data: JSON.stringify(postData),
timeout: 30000
});
假设同步请求导致解释器函数指针等待调用返回任何结果,或等待请求超时。No,删除后,不会调用任何ajax请求。你能解释一下你为什么想删除吗?你有一个有效的例子吗?小提琴手还是打手?另外,您是否尝试设置调试点?这将显示调用的位置..是否打算在所有请求之后调用getEventsData?@Alphonso我已经在我的项目中使用了上述代码,啊..很抱歉,我已经尝试使用Firebug,但无法得到答案。@Mihir getEventsData打算在文档上调用。在您的代码中,它将在所有ajax请求之后通过事件\请求执行。始终$.proxythis.getEventsData,this;您可以尝试注释该行。您的代码使用的是阻塞模式,因此每次只调用相同的AjaxUpper请求。但我也有来自另一个JS文件的其他ajax,当我在上面的ajax设置中设置async:false时,完全不会调用这些文件。