我正在尝试多次调用Ajax,我有时间间隔等字段,并且在该时间段内没有调用ajax。现在问题是,在对同一个Ajax进行多次调用时,可能有可能将数据与之前发送到Ajax的其他数据合并。我不确定会发生什么。 这是我的Ajax电话。
callAjax = function () {
var dataIn = inObj.data || {};
var successFunc = inObj.success || function () {};
var passOn = inObj.passOn || {};
var myParams = {drape:1,type:'GET'};
myParams.url = this.homeComingUrl;
$.extend(myParams,params);
var data = this.fillAction(action,dataIn);
if (myParams.drape) { vidteq.utils.drapeSheer(action); }
var that = this;
var magicCall = $.ajax({
url:myParams.url,
type:myParams.type,
data:data,
success: function (response) {
// TBD we need better error handling
if (myParams.drape) { vidteq.utils.undrapeCurtain(action); }
successFunc(response,passOn);
},
error:function(response) {
if (myParams.drape) { vidteq.utils.undrapeCurtain(action); }
that.gui.io.handleError(response);
}
});
}
saveEvents = function () {
this.commitEditingEvent();
var dataEvents = this.collectEventsToSave();
//$('#calendar').fullCalendar('removeEvents');
var that = this;
if (vidteq.eTrainer==1) {
dataEvents = arguments[0];
}
if (!dataEvents.length) { alert("Nothing to save");return; }
this.callAjax('updateEvents',{
data : { events : JSON.stringify(dataEvents) },
success : function (response,passOn) {
that.handleGetEvent(response,passOn);
}
},{type:'POST'});
}
这可能不是理解问题所必需的。 如果任何机构可以解释Ajax如何处理多个调用,那么它真的很有帮助。
答案 0 :(得分:0)
第一行,你的匿名函数没有保存,也没有运行。然后。在每个函数中,this
指的是什么?什么是this
上下文?是这个窗口还是你的功能如saveEvents.apply( jQuery )
?
JavaScript非常强大,当您想要运行XMLHttpRequest(Ajax使用它)时,会在事件发生时调用脚本,例如"找到服务器","请求发送", "文件正在读取","文件已加载" ...用于您请求的每个状态。 Ajax by jQuery帮助您请求异步。您可以在同一时间内请求尽可能多的Ajax请求。重要的是在成功的情况下创建一个功能。
在此成功函数中,您接收数据,计算它,然后此函数可能会调用另一个Ajax请求,依此类推。当您将这样的请求链接到同一个文件时,我们将其称为Ressource。
Ressource使用Ajax,它使用XMLHttpRequest。
答案 1 :(得分:0)
你需要在你的ajax方法中做异步:false
function isLoggedIn() {
var isLoggedIn;
$.ajax({
async: false,
// ...
success: function(jsonData) {
isLoggedIn = jsonData.LoggedIn
}
});
return isLoggedIn
}