使用 jQuery 和 PHP 序列化和提交表单
问题:尝试使用 jQuery 结果发送表单数据没有数据到达服务器。
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 (getcontact.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>
另一个选项是在 PHP 脚本中使用 var_dump($_POST) 语句来调试表单提交并确定数据是否正常接收。
以上是为什么我的 jQuery 表单提交无法到达我的 PHP 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!