【问题标题】:.serialize() catch no value of contact form.serialize() 没有捕捉到联系表格的价值
【发布时间】:2017-03-09 13:30:19
【问题描述】:

我已经创建了一个 html 联系表和一个 php 发件人邮件文件。 之后,我添加了一个用于返回确认消息的 jquery 代码。但现在代码不起作用,因为序列化函数没有值。

这是我的html代码:

<div id="form" >

    <div class="form-group row">
        <label for="name" class="col-sm-4 col-md-4 control-label">Nome</label>
        <div class="col-sm-8 col-md-6 col-lg-6">
            <input type="text" class="form-control" id="name"  name="name" placeholder="Nome e Cognome"> 
        </div>
    </div>

    <div class="form-group row">
        <label for="email" class="col-sm-4 col-md-4 control-label">E-Mail</label>
        <div class="col-sm-8 col-md-6 col-lg-6">
            <input type="email" class="form-control" id="email" name="email" placeholder="example@domain.com">
        </div>
    </div>

    <div class="form-group row">
        <label for="message" class="col-sm-4 col-md-4 control-label">Messaggio</label>
        <div class="col-sm-8 col-md-6 col-lg-6">
            <textarea class="form-control" rows="4" id="message" name="message" placeholder="Messaggio"></textarea>
        </div>
    </div>

    <div class="form-group row">
        <div class="col-sm-8 col-sm-offset-4">
            <button id="submit">
        </div>
    </div>

</div>

在同一个文件中,jquery:

$(document).ready(function(){
      $('#submit').click(function() {
          var dati = $("#form").serialize();
          alert(dati);
         $.ajax({
               type:"post",
               url:"contact_form.php",
             //  data:  $("#form").serialize(),
                data: dati,
dataType: "html",
               success: function(response){
                   $(".returnmessage").html(response);
               }
       });
      });
   });

警报(数据);始终返回空消息

哪里出错了?谢谢

【问题讨论】:

  • console.log(dati)
  • #form 不是表单而是 div!尝试将表单字段包装在表单标签中并在其上使用序列化
  • 有两个可能的选项。解决方案中给出
  • 它工作!谢谢!!!

标签: javascript jquery ajax forms javascriptserializer


【解决方案1】:

serialize 方法必须在表单元素上调用 - 在你的情况下它是 div。 根据 jQuery doc:

只检查表单元素的输入

最简单的解决方案是更改包装器,而不是 &lt;div id="form" &gt; 使用 &lt;form id="form" &gt;

【讨论】:

    【解决方案2】:

    你需要一个 Form 标签,因为 serialize() 方法只适用于 html Form

    这样的代码

    <form id="form" >
    
                    <div class="form-group row">
                        <label for="name" class="col-sm-4 col-md-4 control-label">Nome</label>
                        <div class="col-sm-8 col-md-6 col-lg-6">
                            <input type="text" class="form-control" id="name"  name="name" placeholder="Nome e Cognome"> 
                        </div>
                    </div>
    
                    <div class="form-group row">
                        <label for="email" class="col-sm-4 col-md-4 control-label">E-Mail</label>
                        <div class="col-sm-8 col-md-6 col-lg-6">
                            <input type="email" class="form-control" id="email" name="email" placeholder="example@domain.com">
                        </div>
                    </div>
    
                    <div class="form-group row">
                        <label for="message" class="col-sm-4 col-md-4 control-label">Messaggio</label>
                        <div class="col-sm-8 col-md-6 col-lg-6">
                            <textarea class="form-control" rows="4" id="message" name="message" placeholder="Messaggio"></textarea>
                        </div>
                    </div>
    
                    <div class="form-group row">
                        <div class="col-sm-8 col-sm-offset-4">
                            <button id="submit">
                        </div>
                    </div>
    
                </form>
    

    【讨论】:

    • 谢谢,现在它可以工作了,但是在我更改
      中的#form 之后,jquery 代码停止返回消息...有什么办法解决这个问题吗?
    • 函数是否成功执行
    • 是的,函数执行成功,但没有显示消息 $(".returnmessage").html(response);
    • 响应值是多少?你能显示服务器端代码吗
    • 在我的 php 文件中:mail("ilariaparodi2000@yahoo.it", $subject, $sendmessage, $headers); echo "Messaggio inviato.
      La contatteremo prima possiibile.";在将
      更改为
      之前它正在工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多