2013-02-20 100 views
0

我正在使用ajax提交表單。那麼我使用的腳本只是測試一些純文本在processform.php中回顯的表單。但是,當我點擊提交按鈕時,沒有任何提示,並且頁面被重新加載。爲什麼我的ajax腳本重新加載我的頁面

不是return false應該阻止它。當我刪除ajax部分時,每件事情都很順利。

我在哪裏做錯了?

$("#submit").click(function(){ 
     $("#sidebar .message").show(); 
     $(".sidebar-content").hide(); 

     $.ajax({ 
     type: "POST", 
     url: "processform.php", 
     data: { name: "John", location: "Boston" } 
     }).done(function(msg) { 
     alert("Data Saved: " + msg); 
     }); 

     return false; 
    }); 
+1

您是否阻止提交按鈕的默認操作? – 2013-02-20 19:32:23

+0

嘗試'e.preventDefault();' – 2013-02-20 19:33:36

+0

你試過了,因爲Ruben Infante在其中一個答案中推薦它 – prakashchhetri 2013-02-20 19:36:17

回答

1

如果元素#submit是一個按鈕或輸入與type="submit",它可能會引發默認行爲將數據發送到任何形式的行動恰好是。

您可以將類型更改爲type="button",該類型在您的點擊處理程序中沒有默認的提交數據行爲或使用event.preventDefault()來阻止默認行爲。

$("#submit").click(function(e){ 
    e.preventDefault(); 
    ... 
}); 

如果要觸發警報時,你的Ajax請求成功,您可以使用success選項,而不是.done()

$("#submit").click(function() { 
    $("#sidebar .message").show(); 
    $(".sidebar-content").hide(); 

    $.ajax({ 
     type: "POST", 
     url: "processform.php", 
     data: { 
      name: "John", 
      location: "Boston" 
     }, 
     success: function(msg) { 
      alert("Data Saved: " + msg); 
     }, 
     error: function() { 
      alert("Error occurred"); 
     } 
    }); 

    return false; 
}); 

jsfiddle

+0

ya ..我不知道e.preventDefault();'。謝謝..我正在修改我的代碼 – prakashchhetri 2013-02-20 19:35:22

+0

但是'processform.php'的數據沒有得到警報。 – prakashchhetri 2013-02-20 19:42:20

+0

非常感謝你..它的工作.. – prakashchhetri 2013-02-20 19:54:14

2

簡單的解決辦法:改變你的提交按鈕類型= 「按鈕」,而不是 「提交」。

相關問題