2016-04-30 114 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