Javascript 为什么用下面的JS代码调用两个ajax请求?

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 = {

我有以下代码从服务器中提取数据。我想在document.ready上调用它。我希望向服务器发出第一个请求,得到响应,然后发出第二个请求,依此类推

但我在Firebug中看到,在初始页面加载时向服务器发出了两个请求。我不知道为什么有两个要求。 这是我的密码

;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时,完全不会调用这些文件。