首页  >  文章  >  后端开发  >  为什么我的 jQuery 表单提交无法到达我的 PHP 服务器?

为什么我的 jQuery 表单提交无法到达我的 PHP 服务器?

Linda Hamilton
Linda Hamilton原创
2024-10-31 08:11:02249浏览

Why is my jQuery form submission not reaching my PHP server?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn