首页  >  文章  >  后端开发  >  为什么我的 jQuery 序列化表单数据无法到达 PHP 服务器?

为什么我的 jQuery 序列化表单数据无法到达 PHP 服务器?

DDD
DDD原创
2024-11-02 16:43:02252浏览

Why is my jQuery serialized form data not reaching the PHP server?

使用 jQuery 和 PHP 序列化并提交表单

问题:尽管使用 jQuery 序列化表单数据,但数据未到达服务器。

HTML 表单:

<code class="html"><form id="contactForm" name="contactForm" method="post">
    <input type="text" name="nume" size="40" placeholder="Nume">
    <input type="text" name="telefon" size="40" placeholder="Telefon">
    <input type="text" name="email" size="40" placeholder="Email">
    <textarea name="comentarii" cols="36" rows="5" placeholder="Message"></textarea>
    <input id="submitBtn" type="submit" name="submit" value="Trimite">
</form></code>

JavaScript:

<code class="javascript">$("#contactForm").submit(function(e) {
    e.preventDefault(); // Prevent browser submission
    $.post("getcontact.php", $("#contactForm").serialize())
    .done(function(data) {
        // Process server response
    });
});</code>

服务器-Side PHP (getcontact.php):

<code class="php">$nume = $_POST["nume"];
$email = $_POST["email"];
$telefon = $_POST["telefon"];
$comentarii = $_POST["comentarii"];</code>

问题解决:

问题是由于使用 $.post( 中的传输方法选项) )(在 jQuery 3.0 中已弃用)。相反,请使用带有以下设置的 $.ajax():

<code class="javascript">$.ajax({
    type: "POST",
    url: "getcontact.php",
    data: $("#contactForm").serialize(),
    dataType: "json",
    success: function(data) {
        // Process server response
    },
    error: function() {
        // Handle errors
    }
});</code>

在此更新的代码中:

  • $.preventDefault() 阻止浏览器提交表单。
  • 传输被省略,允许 jQuery 选择最佳方法。
  • dataType 设置为“json”,将服务器响应解释为 JSON。
  • 成功和错误回调处理服务器分别是响应和错误。

以上是为什么我的 jQuery 序列化表单数据无法到达 PHP 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!

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