使用jQuery 和PHP 序列化和提交表單
問題:嘗試使用資料表沒有資料表到達伺服器。
HTML 表單:
<code class="html"><form id="contactForm" name="contactForm" method="post"> <!-- Input fields and textarea --> <input id="submitBtn" type="submit" name="submit" value="Trimite"> </form></code>
JavaScript (jQuery):
<code class="javascript">$(document).ready(function(e) { $("#contactForm").submit(function() { $.post("getcontact.php", $("#contactForm").serialize()) .done(function(data) { if (data.trim().length > 0) { $("#sent").text("Error"); } else { $("#sent").text("Success"); } }); return false; }) });</code>
.php):
<code class="php">$nume = $_REQUEST["nume"]; // Empty $email = $_REQUEST["email"]; // Empty $telefon = $_REQUEST["telefon"]; // Empty $comentarii = $_REQUEST["comentarii"]; // Empty</code>
原因:
問題在於$.post() 的使用方法。預設情況下,jQuery 以 application/x-www-form-urlencoded 格式傳送資料。但是,PHP 的 $_REQUEST 超全域變數要求表單提交的資料採用 multipart/form-data 格式。解決方案:
解決此問題的一種方法是使用$.ajax() 方法,並將contentType 和processData 選項設為false:
<code class="javascript">var datastring = $("#contactForm").serialize(); $.ajax({ type: "POST", url: "your url.php", data: datastring, contentType: false, processData: false, dataType: "json", // If desired success: function(data) { // Handle success }, error: function() { // Handle error } });</code>
以上是為什麼我的 jQuery 表單提交無法到達我的 PHP 伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!