Javascript JQuery序列化数据输入为空

Javascript JQuery序列化数据输入为空,javascript,jquery,ajax,html,forms,Javascript,Jquery,Ajax,Html,Forms,我有一个包含按钮的表单,当单击它时,它会显示一个模式窗口,另一个表单包含一个输入和一个/取消按钮 我希望以这种模式形式序列化数据,并通过AJAX将其发送到远程服务器 由于某些原因,当我查看控制台时,我看不到序列化数据,只能看到Email= 有人能看看我的代码,告诉我哪里出错了吗?这样行吗 HTML <form id="feedbackForm"> <input class="button" id="bad" src="bad.png" type="image">

我有一个包含按钮的表单,当单击它时,它会显示一个模式窗口,另一个表单包含一个输入和一个
/
取消
按钮

我希望以这种模式形式序列化数据,并通过AJAX将其发送到远程服务器

由于某些原因,当我查看控制台时,我看不到序列化数据,只能看到
Email=

有人能看看我的代码,告诉我哪里出错了吗?这样行吗

HTML

<form id="feedbackForm">
    <input class="button" id="bad" src="bad.png" type="image">
</form>

<div aria-hidden="true" class="modal" id="modal" role="dialog" tabindex="-1">
    <form id="emailForm">
        <div class="form-group">
            <input class="form-control" name="Email" type="text">
        </div>
        <div class="modal-footer">
            <button class="btn" type="submit">Send</button> 
            <button class="btn" data-dismiss="modal" id="closeModal" type="button">Cancel</button>
        </div>
    </form>
</div>

发送
取消
AJAX

<script>
      $(document).ready(function() {
          var request;
          $("#feedbackForm").on("touchstart, click", function(e) {
              e.preventDefault();
              var serializedData = $("#emailForm").serialize();
              $('#modal').modal('toggle');
              $("#emailForm").on("submit", function(e) {
                  e.preventDefault();
                      request = $.ajax({
                          url: "MyURL",
                          type: "post",
                          data: serializedData
                      });
                  request.done(function(response, textStatus, jqXHR) {
                      console.log(serializedData); // displays Email=
                  });
              });
          });
      });
</script>

$(文档).ready(函数(){
var请求;
$(“#反馈形式”)。在(“触摸启动,单击”,功能(e){
e、 预防默认值();
var serializedData=$(“#emailForm”).serialize();
$('#model')。model('toggle');
$(“#emailForm”)。关于(“提交”,功能(e){
e、 预防默认值();
请求=$.ajax({
url:“我的url”,
类型:“post”,
数据:序列化数据
});
完成(函数(响应、文本状态、jqXHR){
console.log(serializedData);//显示电子邮件=
});
});
});
});

如果用户单击touchstart时我理解正确

  • 您可以序列化表单
  • 打开包含表单的模态
  • 覆盖提交事件以发送ajax
  • 问题是,在用用户数据填充变量之前,它已经被赋予了表单的值。(如果他是第一次打开modal)

    只需在正确的时间从ajax submit函数获取数据,如下所示:

    data: getSerializedData()
    
    以及功能

    function getSerializedData(){
        return $("#emailForm").serialize();
    }
    

    每次点击
    #feedbackForm
    时,您是否真的绑定了
    提交
    事件?我尝试使用您的代码,但仍然打印行事件中的数据。preventDefault()应该会导致错误。(因为事件在函数中作为“e”传递)。这不会导致你的案子出错吗?我甚至不知道那是什么意思。我不是专家,这就是我来这里的原因。我试着自学,任何帮助都很感激:)谢谢@AnastasiosSelmanis,但没有产生任何错误。如果有什么不同的话,就使用Chrome。不过,我现在就要做出改变,谢谢你非常感谢你的解释@Anastasios Selmanis,它非常有效:)