2012-04-02 47 views
0

我執行ajax函數需要3秒+所以在這段時間我想鏈接文本(代碼在下面,圖像中爲1)更改爲「請稍候...」。我嘗試了下面的JavaScript代碼,但是會發生什麼情況是文本不會更改,並且該函數正常執行。請有人指出我的錯誤。錨定標記的文本不會改變使用javascript

HTML:

<a id="emailGarageList" href="javascript:EmailGarageList(347)">Email Garage List...</a> 

截圖:

enter image description here

的Javascript:

function EmailGarageList(fId) { 
    $('#emailGarageList').text('Please wait...'); 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/EmailGarageList", 
     data: "{'fId':" + fId + ",'userId':" + userId + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      alert("Garage List Emailed!"); 
     }, 
     error: function() { 
      alert("Error :("); 
     } 
    }); 
    $('#emailGarageList').text('Email Garage List...'); 
}; 

回答

3

移動$('#emailGarageList').text('Email Garage List...');裏面的$ .ajax回調函數。 $ .ajax是一個異步調用,下面的文本在完成ajax調用之前立即更新。

function EmailGarageList(fId) { 
    $('#emailGarageList').text('Please wait...'); 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/EmailGarageList", 
     data: "{'fId':" + fId + ",'userId':" + userId + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      alert("Garage List Emailed!"); 
      $('#emailGarageList').text('Email Garage List...'); 
     }, 
     error: function() { 
      alert("Error :("); 
     } 
    });  
}; 
+0

我認爲OP希望顯示「Email Garage List ...」直到ajax調用完成。 – jbabey 2012-04-02 19:33:04

+0

儘管idrumgods的回答也是正確的,但我將其標記爲接受,因爲它更清楚地解釋了爲什麼我的問題發生了(通過提及ajax調用是異步的)。 – sprocket12 2012-04-02 19:36:48

4

$('#emailGarageList').text('Email Garage List...');放在您的成功功能中。否則它會改變,然後再改回來。

+0

我認爲OP希望顯示'「電子郵件車庫名單......」'直到AJAX調用完成。 – jbabey 2012-04-02 19:32:41

0

我的猜測是,jQuery Mobile的(我假設你正在使用),被修改DOM SSO你的選擇無法找到$(「#emailGarageList」)你認爲是這樣的。

+0

感謝您讓我知道jquery mobile :)我使用普通的jQuery。 – sprocket12 2012-04-02 19:33:33

+0

我根據你的截圖假設你包含jQuery手機,因爲它看起來與jQuery手機應用程序完全相同。 – 2012-04-02 19:39:29

0

我認爲你正在尋找beforeSend callback

$.ajax({ 
    // other stuff ... 
    beforeSend: function() { 
     $('#emailGarageList').text('Please wait...'); 
    } 
}); 
+0

很高興知道,謝謝! – sprocket12 2012-04-02 19:38:44

相關問題