2012-04-02 10 views
0

私はこの時間に3秒以上かかるようなAjax関数を実行します(下のコードと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がajax呼び出しが完了するまで、 '' Email Garage List ... ''を表示したいと思います。 – jbabey

+0

idrumgodsの回答も正しいですが、なぜ私の問題が発生したのかをより明確に説明したので、これを受け入れたものとしてマークしました(ajax呼び出しが非同期であったと言います)。 – sprocket12

4

成功関数の中に$('#emailGarageList').text('Email Garage List...');を入れてください。さもなければそれは変化し、次に右に戻る。

+0

私はOPは '表示したい「電子メールのガレージリスト...」' AJAX呼び出しが完了するまでだと思います。 – jbabey

0

私の推測では(私はあなたが使用していると仮定)のjQuery Mobileは、(「#のemailGarageList」)あなたはそれだと思う道を$を見つけることができませんあなたのセレクタのSSO DOMを変更していることです。

+0

jquery mobileについてお知らせしていただきありがとうございます:)私は通常のjQueryを使用していました。 – sprocket12

+0

jQueryモバイルアプリケーションと同じように見えるため、jQueryモバイルを含むスクリーンショットに基づいて想定しました。 –

0

私はあなたがbeforeSend callbackを探していると思う:

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

おはよう、ありがとう! – sprocket12

関連する問題