使用Jquery提交表单而不刷新页面不起作用

3
我正在尝试提交表单,但无法成功。页面只会刷新一次,但并不执行任何操作。
<form method="post" accept-charset="utf-8" id="contactform" class="pure-form">
  <input type="text" name="name" id="name" class="pure-input-1-2" placeholder="Vor- und Nachname" required>
  <input type="email" name="email" id="email" class="pure-input-1-2" placeholder="E-Mail" required>
  <textarea class="pure-input-1-2" name="message" id="message" rows="10" placeholder="Nachricht" required></textarea>
  <input type="hidden" name="ip" id="ip" value="<?php echo $_SERVER[" REMOTE_ADDR "]; ?>">
  <input type="hidden" name="date" id="date" value="<?php echo date(" Y-m-d H:i:s "); ?>">
  <button type="submit" name="mysubmit" id="mysubmit" class="pure-button pure-input-1-2 pure-button-primary">Nachricht senden</button>
</form>

$('#mysubmit').submit(function(e) {
  e.preventDefault();
  $.ajax({
    type: 'POST',
    url: 'inc/xxx.php',
    data: $('#contactform').serialize(),
    dataType: "text",
    success: function(data) {

    }
  });
});

2
你的事件监听器附加到了错误的元素上。应该是$('#contactform').submit - sheng
3
submit 是一个表单事件。click 则是一个按钮 (#mysubmit) 事件。 - sheng
2
是的,就是这样。非常感谢你。我没看到那个。 - 123php
1个回答

4

#mysubmit是一个按钮,它没有一个submit事件。因此表单被提交为一个标准请求。

为了解决这个问题,应该将事件挂钩到form元素的submit事件上:

$('#contactform').submit(function(e) {
  e.preventDefault();
  $.ajax({
    type: 'POST',
    url: 'inc/xxx.php',
    data: $(this).serialize(),
    dataType: "text",
    success: function (data) {

    }
  });
});

1
非常感谢你! - 123php
2
没问题,很高兴能帮忙。 - Rory McCrossan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接