我正在定期进行ajax调查。为了达到同样的目的,我有以下代码:
window.setInterval(pollForBids, 5000);
函数pollForBids定义如下:
function pollForBids(supplierId){
alert(supplierId);
$.ajax({
method: "GET",
url : "/enterprize-sourcing/refreshBids.do",
async : true,
cache : false,
data : {action : "refreshList",
eventId : eventId,
lastRetrieveTime: makeFinite(latestBidTime, 0),
supplierId : makeFinite(supplierId, "")},
success: function(xml){
refreshBids(xml);
}
});
}
我在代码中有其他地方需要参数,但在这种特殊情况下我没有。但是,警报每5秒给我一个随机整数值。它不应该总是未定义吗?
答案 0 :(得分:3)
正如Mozilla开发人员中心所述:“setInterval()将传递回调函数调用后的毫秒数”。
通常,您传递给setInterval
的回调函数不会带任何参数,因此您在supplierId
参数中获得了“毫秒延迟”值。
另请注意,无论您的回叫是否已完成,都会每隔5秒调用setInterval
。
答案 1 :(得分:0)
为什么不使用像
这样的东西function pollForBids(supplierId){
if (typeof supplierId == "undefined") {
supplierId = "default value";
}
$.ajax({
method: "GET",
url : "/enterprize-sourcing/refreshBids.do",
async : true,
cache : false,
data : {action : "refreshList",
eventId : eventId,
lastRetrieveTime: makeFinite(latestBidTime, 0),
supplierId : makeFinite(supplierId, "")},
success: function(xml){
refreshBids(xml);
}
});
}
答案 2 :(得分:0)
尝试将函数包装在setInterval:
中的匿名函数中 window.setInterval( function() {
pollForBids();
}, 5000);
这将防止随机数传递到pollForBids函数。