2016-01-29 167 views
2

我知道這是如何工作的,我已經做了幾千次。儘管如此,它現在還不行。爲什麼?jQuery在表單提交刷新頁面

我有以下代碼。我試過e.preventDefault,e.stopPropagation,return false。我已將表單的html更改爲<form onsubmit="function()"等。不過,每次我提交表單時,頁面都會刷新。

誰能告訴我我是多麼醉了嗎?我做錯了什麼?

jQuery(document).ready(function(){ 
    jQuery('.register-form').submit(function(e){  
     var form = jQuery(this).serialize();   
     jQuery.ajax({ 
      type : "post", 
      dataType : "json", 
      url : myAjax.ajaxurl, 
      data : form, 
      success : function(d){ 
       if(d.success) { 
        alert('Takk for din påmelding'); 
       } else { 
        alert('Noe gikk galt, vennligst prøv igjen senere'); 
       } 
      }, 
      error: function(){ 
       alert('Noe gikk galt, vennligst prøv igjen senere'); 
      } 
     });  
     return false; 
    }); 
}); 

對於那些誰願意跟一個網址,該網站是: http://ccnmn.loke.itvault.no

注:這是在挪威。您可以通過所示

+0

什麼叫功能寄存器?用另一種方式問,你的代碼如何到達它調用register()的地方? – Tommy

+0

這將是我最近的嘗試,onsubmit =「register(); return false;」。我將編輯我的問題 –

+0

如果沒有上下文,就不可能說。 –

回答

1

包按「Priser」在頂部的菜單,然後「Bestill」發現窗體這Fiddle說明你的代碼在正確的位置工作只是用正確的event.preventDefault();return false;精細到位代碼(另外,我將你的變量從form改爲myForm,以防萬一發生一些奇怪的名稱衝突)。如果你鏡像這個小提琴並且仍然有問題,你的問題必須存在於別處(在提交時沒有處理程序按鈕嗎?)。

<form class="register-form" action="/echo" method="POST"> 
    <input type="Text" id="test" name="test"/> 
    <input type="Submit" value="Go" id="TestSubmit"/> 
</form> 

jQuery(document).ready(function(){ 
    jQuery('.register-form').submit(function(event){ 
     event.preventDefault(); 
     var myForm = $(this).serialize(); 
     jQuery.ajax({ 
      type : "post", 
      dataType : "json", 
      url : "www.google.com", 
      data : myForm, 
      success : function(d){ 
       if(d.success) { 
        alert('Takk for din påmelding'); 
       } else { 
        alert('Noe gikk galt, vennligst prøv igjen senere'); 
       } 
      }, 
      error: function(){ 
       alert('Noe gikk galt, vennligst prøv igjen senere'); 
      } 
     }); 
     //return false; would also work here instead 
     //of the event.preventDefault(); above   
    }); 
}); 
+0

'返回false;'最後也行。 – PHPglue

+0

@PHPglue - 這是一個有效的點。我使用我使用的方法('event.preventDefault();')測試了他的代碼以及jQuery的建議實現 - http://api.jquery.com/submit/本身。但是,我會更新答案,包括返回false也適用。 – Tommy