2016-04-27 73 views
-1

我想提交一個使用jQuery的表單,以便頁面在提交時不刷新。我的代碼是:提交表單與jquery說,它的工作原理,但它不

<div class="subscribe"> 
<p><span>Subscrever à Newsletter<span><br/> 
<form method="post"> 
     <input type="text" name="nwsltrname" value="Nome"/><br/> 
     <input type="email" name="nwsltrmail" value="Email" required/><br/> 
     <input type="hidden" name="nwsltrmailx" value=""/><br/> 
     <input type="submit" name="nwsltradd" value="Subscrever" /> 
</form></p> 
</div> 

的jQuery:

$(".subscribe input[type=submit]").click(function() { 
    var siteurl = window.location.href; 
    var nwsltrname = $("input[name='nwsltrname']").val(); 
    var nwsltrmail = $("input[name='nwsltrmail']").val(); 
    var nwsltrmailx = $("input[name='nwsltrmailx']").val(); 
    var dataString = "&nwsltrname="+ nwsltrname + "&nwsltrmail=" + nwsltrmail + "&nwsltrmailx=" + nwsltrmailx; 
    $.ajax({ 
     type: "POST", 
     url: siteurl, 
     data: dataString, 
     success: function(){ 
      alert("it works!"); 
     } 
    }); 
    return false; 
}); 

所以,問題的形式不提交,但它仍然提醒「!它的工作原理」

我的代碼有什麼問題?我怎樣才能讓它提交表單?

+0

dataString需要是一個JSON結構 –

+0

所以...應該寫在那裏? –

+0

AJAX表單提交不會以傳統的HTML意義提交表單。它禁止正常提交,而是通過XHR請求路由數據。如果這是通過您的瀏覽器的網絡控制檯發生的,您可以非常有效。 – Utkanos

回答

0

我想你需要

data: { 
     nwsltrname: nwsltrname, 
     nwsltrmail: nwsltrmail, 
     nwsltrmailx: nwsltrmailx 
     } 

,這將在服務器上創建正確的參數。警報所做的只是說服務端功能已經返回。並不是說它處理正確。

另外,請看上面的註釋。

苯教機會

+2

調用'$ .ajax()'時'data'屬性的值可以是一個字符串;它只是與那個請求的查詢字符串一樣被傳遞。 –

+0

謝謝@AnthonyGrist,我明白這一點。但是,它確實提供了更容易調試/處理的形式的返回,除非後端服務器明確識別GET格式。 –

0

,如果你有在服務器代碼中錯誤的成功甚至會工作...所以加的響應參數去成功的函數,那麼它提醒要知道服務器響應..然後你可以調試問題..變化碼象下面...

$.ajax({ 
     type: "POST", 
     url: siteurl, 
     data: dataString, 
     success: function(response){ 
      alert(response); 
     } 
    }); 
+0

我得到的警報是該網頁的完整HTML,如<!DOCTYPE html> etc等 –

+0

您是否提交了正確的網址... siteurl ... window.location.href是當前頁面的url ...將網址更改爲您寫入保存代碼的頁面 –

+0

或者如果您將保存代碼寫入同一頁面,則執行isset($ _ POST)檢查並執行所需的代碼塊 –

0
$(".subscribe input[type=submit]").click(function() { 
    var siteurl = window.location.href; 
    var nwsltrname = $("input[name='nwsltrname']").val(); 
    var nwsltrmail = $("input[name='nwsltrmail']").val(); 
    var nwsltrmailx = $("input[name='nwsltrmailx']").val(); 
    var dataString = "&nwsltrname="+ nwsltrname + "&nwsltrmail=" + nwsltrmail + "&nwsltrmailx=" + nwsltrmailx; 
    $.ajax({ 
     type: "POST", 
     url: siteurl, 
     data: dataString, 
     success: function(){ 
      alert("it works!"); 
     } 
    }); 
    return false; 
}); 

上述請求應寫爲,

$(".subscribe input[type=submit]").click(function() { 
    var siteurl = window.location.href; 
    var nwsltrname = $("input[name='nwsltrname']").val(); 
    var nwsltrmail = $("input[name='nwsltrmail']").val(); 
    var nwsltrmailx = $("input[name='nwsltrmailx']").val(); 
    var dataString = { 
         Nwsltrname = nwsltrname, 
         Nwsltrmail = nwsltrmail, 
         Nwsltrmailx = nwsltrmailx 
        }; 
    $.ajax({ 
     method: "POST", 
     url: siteurl, 
     dataType: "json" 
     data: dataString, 
     success: function(data){ 
      alert("it works!"); 
     } 
    }); 
    return false; 
}); 

注意:請記住您的請求類型是帖子,以便數據將在請求正文中發送,而不是標題。成功功能將返回您的數據。

+0

查看** @ Peter Smith **回答和下面的評論。 –

+0

這是因爲我從這裏直接複製它,現在沒有任何js文件中的代碼正在工作。所有的{和(被關閉...... –

+0

你的代碼中的錯誤是缺少dataType後的「,」json「,但即使修復它不提交,現在我甚至沒有得到」它的作品!「alert ... –

相關問題