2013-06-03 32 views
0

我在這一個上拉我的頭髮..我有一個.html頁面來表示我的移動應用程序的主頁。在同一個html頁面中,我定義了一個頁面作爲登錄屏幕。顯示登錄界面邏輯的作品就好了... ...我的問題是,我有以下簽名的登錄功能...回調不會在JQuery Mobile中觸發多頁

ajaxLogin(credentials, successCallback, failureCallback) { 
    $.ajax({ 
      url: SERVER_API + '/login', 
      data: credentials, 
      type: 'post', 
      async: true, 
      beforeSend: function() { 
       $.mobile.showPageLoadingMsg(true); 
      }, 
      always: function() { 
       console.log('always'); 
       $.mobile.hidePageLoadingMsg(); 
      }, 
      done: function (data, status, xhr) { 
       console.log('login: ok'); //< -- This never fires but I can see that the server returned a 200 in Safari's developer menu 
       successCallback(); 
      }, 
      fail: function (request, error) { 
       failureCallback(); // <-- This function is never executed when I send bad login info. But again, the server is returning an error status code 
      } 
     }); 
} 

我認爲這將是非常簡單的...我缺少的東西?

回答

0

beforeSend函數是jQuery Ajax設置jQuery.ajax([settings])的一部分。然而總是,完成失敗是jqXHR對象的promise方法。在你的例子中,你已經使用總是,完成失敗作爲不正確的設置。

$.ajax({ 
    url: "http://.....", 
    beforeSend: function (xhr) { 
     // code 
    } 
}).done(function (data) { 
    // do something 
}); 

你可以在jQ Ajax documentation找到更多的信息。

+0

您是對的,先生,謝謝! Mundane細節... – ChickensDontClap

0

我認爲你要尋找的「成功」和「錯誤」,即:

ajaxLogin(credentials, successCallback, failureCallback) { 
    $.ajax({ 
     url: SERVER_API + '/login', 
     data: credentials, 
     type: 'post', 
     async: true, 
     success: successCallback, 
     error: failureCallback 
    }); 
} 

然後你就可以把你的成功的保健/失敗原調用該函數:

ajaxLogin(
    credentialsData, //data you're passing to the function 
    function (data) 
    { 
     //stuff to do on success 
    }, 
    function (jqXHR, statusText, errorThrown) 
    { 
     //stuff to do on failure 
    } 
); 
相關問題