提交一个在同一页面上的表单,而不重新刷新页面

submit a form that is on the same page without refeshing the page

本文关键字:刷新 表单 新刷新 一个 提交 一页      更新时间:2024-05-06

所以这是一场令人困惑的战斗。我想提交一份在同一页上的表格作为我的php验证。

html

 <form id="form">
  //fields
  <input type="submit" id="submit">
  </form>
<?php
/ /check if form is good
?>

jquery

$("#actvpost").submit(function(){
    //code
  return false;
});

当我点击提交时,页面仍然刷新,我怎么能让它只发送数据而不发送使用外部页面

我可以在没有jquery的情况下完成,但它会刷新页面,我想将jquery附加到它,这样它就不会刷新页面。

表单的id应该是actvpost而不是form,因为您在jQuery选择器中引用了actvpost

您的提交函数不应该是return false,而应该使用event.preventDefault:

$("#actvpost").submit(function( event ){
    event.preventDefault();
    // your code
});

event对象

在触发器上,所有事件都会传递一个event对象作为它们的第一个参数。该对象包含许多关于事件的有用属性,如event.targetevent.type(返回click、keyup等)。jQuery还使用有用的方法扩展了该对象,如preventDefault()

虽然没有必要,但我确实建议尽早将event.preventDefault()放在处理程序中,如果不是第一个的话。同样,这不是必须的,但如果您计划在未来编写更复杂的代码,这是一个很好的实践。组织是关键,一切都应该遵循某种共同的惯例。当使用任何约定进行编码时,解决问题要容易得多,更不用说通用约定了。

本质上,如果没有新的HTTP请求,您就无法运行PHP,因此,您可能希望在提交之前仅使用javascript验证,服务器端验证是最后一道防线。要将表单提交到您的PHP脚本,您可能需要:

  • 使用AJAX(jQuery使其变得简单)
  • 提交到iframe,同时在其"加载"事件上侦听Javascript中的响应

这两种方法都会生成一个新的HTTP请求,并以javascript提供响应。

可能:

$("#actvpost").submit(function (event) {
  event.preventDefault();
  // here you may by your self send request and get response
});

也许您会使用类似jQuery Form插件的东西,并使用ajaxForm函数。

替换:

<form id="form">

带有:

<form id="actvpost">