2011-12-24 4 views
0

は、私は、以下のボタンを持つフォームを持って提出することを防ぎ良い。 ?私は広告location.href="mahjong.php?layout=win";しようとすると、問題は、私が使用している場合は、私のフォームは

に勝つ=私が欲しい私は、このボタンを押すと、フォームが送信とURL mahjong.phpをロードしていることであるレイアウトです:

$("#test2").click(function(){ 
location.href="mahjong.php?layout=win"; 
$.ajax({ 
      type: "POST", 
      data: $("#form").serialize(), 
      cache: false, 
      url: "insert.php" 
     }); 
     return false; 
    }); 

私はURLに行くが、フォームは常に提出されません。これを修正する方法。 insert.phpファイルを編集することはできません。これは他のボタンでも使用されています(リダイレクトが必要ない場合)

答えて

3

ゴーはsuccessハンドラを使用して、戻ってきましたスピナーを使用したり、ボタンを無効にして、ユーザーが何かが起こっていることを知ったり、ボタンを再びクリックしたりしないようにします。

+0

[OK]を、私はあなたが '成功を使用して参照してください。'違いは何である機能():関数() '、別の男が'完全示唆されます? – Maurice

+0

@Maurice 'success'は、AJAXリクエストが「成功」の結果を返した場合にのみ発生します。エラーが返された場合でも(たとえば、404が見つかりませんでした)、「完了」は完了した後に発生します。あなたのアプリケーションに適しているものを決定する必要があります。 – lonesomeday

+0

説明をいただきありがとうございます。 – Maurice

0

location.hrefをajax呼び出しの後に挿入します。そうしないと、ajax呼び出しが送信される前にページを離れることがあります。

これがうまくいかない場合は、location.hrefをajax呼び出しのコールバック関数に入れて、サーバーからの応答を受け取った後に新しいページをロードして、データが送信されたことを確認できます。それはおそらく、ページ上のいくつかの視覚的な通知を置く価値が例えばだ

$("#test2").click(function() { 
    $.ajax({ 
     type: "POST", 
     data: $("#form").serialize(), 
     cache: false, 
     url: "insert.php", 
     success: function() { 
      location.href = "mahjong.php?layout=win"; 
     } 
    }); 
    return false; 
}); 

:フォーム後のリンクに

0

location.hrefを設定すると、現在のページがアンロードされ、その上のすべてのスクリプトが停止します。

は(据え置き)完了ハンドラを使用します。この1を試し

$("#test2").click(function() { 
    $.ajax({ 
     type: "POST", 
     data: $("#form").serialize(), 
     cache: false, 
     url: "insert.php", 
    }) 
    .then(function() { 
     location.href = "mahjong.php?layout=win"; 
    }); 
    return false; 
});