【发布时间】:2014-09-16 10:43:05
【问题描述】:
我有以下代码从服务器中提取数据。我想在 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
提前致谢
【问题讨论】:
-
你有一个有效的例子吗?小提琴还是笨蛋?另外,您是否尝试设置调试点?这将显示调用从哪里调用..
-
是否打算在所有请求之后调用 getEventsData?
-
@Alphonso 我已经在我的项目中使用了上面的代码,啊..对不起,我已经尝试过使用 Firebug 但无法得到答案。
-
@Mihir getEventsData 旨在在 document.ready() 上调用
-
在您的代码中,它在所有通过
events_request.always($.proxy(this.getEventsData, this));的ajax 请求之后执行您可以尝试评论该行。
标签: javascript jquery ajax long-polling