2016-04-30 116 views
0

我在页面中使用fullcalendar jQuery插件创建/查看会议邀请。事件函数完整日历中的多个ajax调用

而我的新要求是在我们的页面中显示特定用户在Outlook中创建的会议。我的web服务(用于从Outlook展开会议)花了45秒的时间发送响应。我不希望用户完全等待45秒(性能问题)所以我只想首先从db加载事件,然后我想追加事件作为web服务响应返回。因此用户感觉不到这么多的延迟。

所以我只做了两个Ajax调用来提取所需的细节。一个ajax调用是从本地数据库(SUCCESS)提取事件,另一个是调用web服务来提取在Outlook中创建的事件。

events: function(start, end, timezone,callback) { 
      $.ajax({ 
       url: // url hits db and gets meeting details in db 
       dataType: 'json', 

       success: function(response) { 
        var events = []; 
       if(response != null){ 
        alert("Success"); 
        $.map(response ,function (r){ 
         alert(r.title + " " + r.start + " " + r.end); 

         events.push({ 
          title : r.title, 
          start : r.start, 
          end : r.end 
         }); 
        }); 

       }  
       callback(events); 
      } 

      $.ajax({ 
       url: // url calls webservice and gets meetings in Outlook 
       dataType: 'json', 

       success: function(response) { 
        var events = []; 
       if(response != null){ 
        alert("Success"); 
        $.map(response ,function (r){ 
         alert(r.title + " " + r.start + " " + r.end); 

         events.push({ 
          title : r.title, 
          start : r.start, 
          end : r.end 
         }); 
        }); 

       }  
       alert("External Events "+ events.length); //EXECUTED 

       callback(events); //NOT EXECUTED 
       } 
     }); 
    } 

而现在的问题是,

1。首先ajax呼叫工作正常。

2。从Web服务获得正确的响应,但是响应没有附加到日历。

而我的疑问是,

  1. 我们不能用回调(事件)的两倍?

  2. 或者请给我提供替代解决方案呢?

  3. 如果分别使用两个事件函数,则只会执行第二个事件函数。为什么第一个事件函数没有被执行?

回答

0

你的代码没有问题。确保您从服务器获得的响应是​​您所期望的(例如,response!= null)。

https://jsfiddle.net/5ds8z06p/

var foo = function(callback) { 
    $.ajax({ 
    url: '/echo/json', 
    success: function() { 
     callback('first'); 
    } 
    }); 

    $.ajax({ 
    url: '/echo/json', 
    success: function() { 
     callback('second'); 
    } 
    }); 
}; 

foo(function(bar) { 
    console.log(bar); 
}); 
+0

感谢您的响应.. 100%肯定我得到响应和警报已作出看到响应长度(执行罚款),但不执行回调。 – Krupa