2016-08-25 8 views
0

私はajax関数を使用して電子メールを送信している電子メール送信ボタンをクリックするとスピナーをロードしたいだけです。スピナーを隠す。ここに私のコードです:jqueryでajax関数を呼び出す前にモーダルウィンドウでスピナーをロードしたい

マイスピナーロードのdiv

<div id="loader" class="loader" style="display:none;"></div> 

のSpinnerクラス

<style> 
.loader { 
position: fixed; 
left: 0px; 
top: 0px; 
width: 100%; 
height: 100%; 
z-index: 9999; 
background: url('http://test:8000/images/page_loader.gif') 50% 50% no-repeat rgb(249,249,249);  
} 
</style> 

私のjqueryの:問題は、私のスピナーは、後にロードするために開始され

$("#send_mail").click(function(){ 
    $(".loader").show(); 
    var subject = $("#subject").val(); 
    var token = "{!! csrf_token() !!}"; 
    var order_id = "{{ @$orders->id }}"; 
    var url = "{!! URL::to('/') !!}"; 
    $.ajax({ 
     type: 'POST', 
     url: url +'/order/'+order_id+'/sendmail', 
     data: {'_token':token, 'subject':subject }, 
     async : false, 
     beforeSend: function() { 

     }, 
     success : function(data) { 
      setTimeout(function() 
      { 
       $(".loader").fadeOut("slow"); 
      },9000); 
      var result = JSON.parse(data); 
      if(result) 
      { 
       $("#email_modal").modal('hide'); 
       if(result['status'] == 'success') 
       { 
        $("#mail_success").show(); 
        setTimeout(function() 
        { 
         $('#mail_success').hide(); 
        },3000); 
       } 
       else 
       { 
        $("#mail_error").show(); 
        setTimeout(function() 
        { 
         $('#mail_error').hide(); 
        },3000); 
       } 
      } 
     }, 
     error: function(data){ 
      alert(data); 
     } 
    }); 
}); 

メールが送信されました。誰も私がここでやっている間違いのように私にこれを助けることができますか?

あなたの助けを感謝します!

ありがとうございます。

+0

このリンク上の答えを参照してください。http://stackoverflow.com/questions/68485/how-to-show-loading-spinner-in-jquery?rq=1 –

+0

私もこれを使っていましたが、適切な応答が得られません。 – cathy123

+0

実際に私はこれらのすべてをモーダルウィンドウで動かしています。今私に何かが欠けていると教えてください。私はこの単純なプロセスのために多くの方法を試しましたが、適切な出力を得られなかったので... – cathy123

答えて

0

beforeSendコールバック内にローダーを表示し、errorまたはsuccessコールバックに表示する必要があります。

JSコード:

//hide the spinner by default in css 'display:none' 
$.ajax({ 
    data:... 
    url:.... 
    beforeSend:function() { 
     $('.loader').show(); 
    }, 
    success:function(){ 
     $('.loader').hide(); 
     ..... 
    }, 
    error:function(){ 
     $('.loader').hide(); 
     ..... 
    }); 
+0

ええ、私もこの1つを試しました...しかし何も起こりません。何が起きているのか分かりません。問題は、メールの送信ボタンをクリックするとスピナーが表示されることです。しかし、それは起こっていない。 – cathy123

+0

実際に私はモーダルウィンドウでこれらすべてを扱っています。他に問題がなければ動作するはずです。このサンプルを確認してください。jsfiddle、http://jsfiddle.net/Behseini/vx1j3gx9/ – dreamweiver

+0

今私に何かが欠けていると教えてください。私はこの単純なプロセスのために多くの方法を試しましたが、適切な出力を得られなかったので... – cathy123

関連する問題