2012-04-13 15 views
0

を無視:IE&クロームは、次のコードで前のAjaxポストにjQueryのコール

  $('#langHref').html("Translating...").css("color","#FF9933"); 

      jQuery.ajax({ 
       type: "post" 
       , url: someUrl 
       , data: { "text": $('body').html() } 
       , async: false 
       , success: function (data, status) { 
        $('body').html(data);      
       }, 
       error: function() { 
        alert('We are sorry, there was an error in the translation service.'); 
        //console.log("ERROR", arguments); 
       } 
      }); 

      $('#langHref').html("Select Language").css("color",""); 
     } 

私は「langHref」のIDで<a>タグを持って、ここでの考え方は、Ajaxが呼び出される直前ということですリンクテキストが「翻訳中...」に設定され、その色がオレンジ色に変わりました。 Ajaxが完了すると、リンクテキストは標準の「Select Language」に戻ります。

これはFFではうまく機能しますが、IEとChromeではうまく機能しません。私はすべてのbeforeSend jQueryオプションとajaxSendイベントを試してみました。

私はasyncをオフにした場合:falseとすると、すぐに「言語を選択」に戻ってテキストが変更され、動作していないことがわかります。私もasyncを試してみました:trueと "Translating ...."をbeforeSendに入れてみましたが、これはどのブラウザでもうまくいきませんでした。

思考?

答えて

0

は、私はあなたのAjaxリクエストにbeforeSendを追加したいと思いますので、同様にそこにこれを行う:

beforeSend: function (xhr) { 
    $('#langHref').html("Translating...").css("color","#FF9933"); 
} 

とあまりにも完全な方法:

complete : function(jqXHR, textStatus) { 
      $('#langHref').html("Select Language").css("color",""); 
}, 
+0

よくやったけど、私はbeforeSendを試しましたが、私は完全なものを試していませんでした。今すぐうまくいく! – Synergyauto

0

asyncを変更することで行うことができますプロパティをtrue にして、完了したイベントの最後の行を入れます。このような何か:

  jQuery.ajax({ 
       type: "post" 
       , url: someUrl 
       , data: { "text": $('body').html() } 
       , async: true 
       , success: function (data, status) { 
        $('body').html(data);      
       }, 
       error: function() { 
        alert('We are sorry, there was an error in the translation service.'); 
        //console.log("ERROR", arguments); 
       }, 
       completed:function(){ 
        $('#langHref').html("Select Language").css("color",""); 
       }, 
       beforeSend:function(){ 
       $('#langHref').html("Translating...").css("color","#FF9933"); 
       } 
      }); 

たぶん、何が起こっているのかは、UIを変更する前に、jQueryのAjaxの機能は、それがUIをブロック非同期(async)だったので、それを変更することができないので、ということです。

関連する問題