多次同时调用ajax

时间:2014-12-18 08:31:43

标签: javascript php jquery ajax

我正在尝试多次调用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如何处理多个调用,那么它真的很有帮助。

2 个答案:

答案 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 
}