5

クライアントがサーバーの応答を待っている間に実行される関数を実行するにはどうすればよいですか?これが私のコードです。調べて.load()関数を見つけましたが、これにどのように適合しますか?どんな助けでも素晴らしいでしょう!ありがとう

$.ajax({
    type: "POST",
    url: "mail.php",
    data: {name: name.val(), email: email.val(), phone: phone.val(), subject: subject.val(), message: message.val()}
    }).done(function(){
        alert("Your message was sent. We will be in contact with you shortly.");
        window.location="index.html";
});
4

3 に答える 3

12

$ .ajax()を呼び出した後に記述したコードの次の行は、ブラウザーが応答を待っている間に実行されます。

それで:

$.ajax();
yourAwesomeFN();

XhttpRequestsは非同期です。追加の作業は必要ありません。

于 2012-08-25T20:52:32.880 に答える
3

「 beforeSend 」パラメータを確認しましたか。

$.ajax({
type: "POST",
    url: "mail.php",
    data: {name: name.val(), email: email.val(), phone: phone.val(), subject: subject.val(), message: message.val()},

   beforeSend: function(){
     // Handle the beforeSend event
   },
   complete: function(){
     // Handle the complete event
   }
   // ......
 });
于 2012-08-25T20:53:11.353 に答える
1

モノスレッドであるため、JSで別の関数が実行されている間は関数を実行できません。ただし前後に何かを実行できます。待機中に表示されるメッセージ/スピナーを設定する方法を探していますか?呼び出しのbeforeSendオプションを確認してください。$.ajax()

$.ajax({
    type: "POST",
    url: "mail.php",
    data: {name: name.val(), email: email.val(), phone: phone.val(), subject: subject.val(), message: message.val()}
    beforeSend : function(){

        // do your stuff here

    }
    }).done(function(){
        alert("Your message was sent. We will be in contact with you shortly.");
        window.location="index.html";
});
于 2012-08-25T20:54:19.490 に答える