2011-12-24 203 views
0

我有以下按鈕形式:,防止我的表單提交

<input id="test2" class="formbutton" type="submit" value="Play again" /> 

按提交大火此javascript:

$("#test2").click(function(){ 
     $.ajax({ 
      type: "POST", 
      data: $("#form").serialize(), 
      cache: false, 
      url: "insert.php" 
     }); 
     return false; 
    }); 

這一切工作精細。問題是,當我嘗試廣告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; 
    }); 

我去的網址,但表單並不總是提交。如何解決這個問題。我無法編輯insert.php文件,因爲這個文件也被其他按鈕使用(不需要重定向)

回答

3

轉到表格後鏈接返回,使用success處理程序:

$("#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

好的嘗試這一塊,我看你用'成功:函數()',另一個人是在暗示'完整:功能()'有什麼區別? – Maurice 2011-12-27 12:20:46

+0

@Maurice'success'只在AJAX請求返回「成功」結果時纔會發生;完成後會發生'complete',即使它返回了錯誤結果(例如404 Not Found)。你必須決定哪一種更適合你的應用。 – lonesomeday 2011-12-27 14:13:50

+0

感謝您的解釋,它效果很好! – Maurice 2011-12-27 16:56:49

0

在ajax調用之後放置location.href,否則您可能會在發送ajax調用之前離開頁面。

如果這不起作用,請將location.href放入ajax調用的回調函數中,以便在您收到服務器響應後加載新頁面,以確保數據已發送。

0

只要您設置location.href,當前頁面將被卸載,其上的所有腳本都將停止。

使用(延遲)完成處理程序:

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