Javascript 不刷新页面的表单提交
也许有人能帮我解决这个小问题。我正在尝试在不刷新页面的情况下提交此表单。但是它会跳过帖子,直接转到ajax调用。我想我错过了这首歌。我已在线搜索,但无法找到我需要的信息。我们将非常感谢您的帮助,或指向另一个表单提交 HTML格式如下:Javascript 不刷新页面的表单提交,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,也许有人能帮我解决这个小问题。我正在尝试在不刷新页面的情况下提交此表单。但是它会跳过帖子,直接转到ajax调用。我想我错过了这首歌。我已在线搜索,但无法找到我需要的信息。我们将非常感谢您的帮助,或指向另一个表单提交 HTML格式如下: <!DOCTYPE html> <html> <head> <title>AJAX | Project</title> <link href="project.css" rel="stylesh
<!DOCTYPE html>
<html>
<head>
<title>AJAX | Project</title>
<link href="project.css" rel="stylesheet"/>
<script src="jquery.js"></script>
</head>
<body>
<div id="mainCon">
<h1>Contact Book</h1>
<div id="form_input">
<form id="myform" method="post" action="addrecord.php">
<label for="fullname">Name:</label>
<input type="text" name="fullname" id="fullname"/><span id="NameError"> </span>
<br/>
<label for="phonenumber">Phone Number:</label>
<input type="text" id="phonenumber" name="phonenumber"><span id="PhoneError"></span>
<br />
<input id="buttton" type="submit" onClick="addnumber()" value="Add Phone Number"/>
<input type="button" id="show" value="the Results"/>
</form>
</div>
<div id="form_output">
</div>
</div>
<script src="project.js"></script>
<script type="text/javascript">
function addnumber(){
var Fullname = document.getElementById("fullname").value;
var Phonenumber = document.getElementById("phonenumber").value;
if(Fullname == ""){
document.getElementById("NameError").innerHTML = "Please Enter a valided Name";
}
if(Phonenumber == ""){
document.getElementById("PhoneError").innerHTML = "Please Enter a valided Name";
}
}
</script>
</body>
</html>
只需捕获提交事件并阻止它,然后执行ajax
$(document).ready(function () {
$('#myform').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action') || window.location.pathname,
type: "GET",
data: $(this).serialize(),
success: function (data) {
$("#form_output").html(data);
},
error: function (jXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
var frm=$(“#myform”);
提交财务报表(功能(ev){
$.ajax({
类型:frm.attr('method'),
url:frm.attr('action'),
数据:frm.serialize(),
成功:功能(数据){
警报(“正常”);
}
});
ev.preventDefault();
});
...
问题在于表单使用“POST”方法提交的“POST”方法,而在AJAX中使用的是“GET”。
$(文档).ready(函数(){
$(函数(){
$(“#myForm”).submit(函数(事件){
event.preventDefault();
$.ajax({
方法:“POST”,
url:'submit.php',
数据类型:“json”,
contentType:“应用程序/json”,
数据:$('#myForm')。序列化(),
成功:功能(数据){
警报(数据);
},
错误:函数(xhr、desc、err){
控制台日志(err);
}
});
});
});
});
您不需要单击()和提交()
似乎会重定向url,尝试数据:$(“#myform”).serialize(),您可以使用jquery插件,访问Adeneo,当我将url更改为$(this)时。attr('action')它会发布,但会重新定向到“success”帖子。如何调用第二个显示记录的php文件?不确定我是否理解您的意思,成功回调就是从中获取数据的地方?使用包含html的表单。有一个成功的回音表明它是发布的。还有第二个php文件listreord.php,这是我希望用ajax调用的页面
$(document).ready(function () {
$('#myform').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action') || window.location.pathname,
type: "GET",
data: $(this).serialize(),
success: function (data) {
$("#form_output").html(data);
},
error: function (jXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
<script type="text/javascript">
var frm = $('#myform');
frm.submit(function (ev) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert('ok');
}
});
ev.preventDefault();
});
</script>
<form id="myform" action="/your_url" method="post">
...
</form>
<!-- index.php -->
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<form id="myForm">
<input type="text" name="fname" id="fname"/>
<input type="submit" name="click" value="button" />
</form>
<script>
$(document).ready(function(){
$(function(){
$("#myForm").submit(function(event){
event.preventDefault();
$.ajax({
method: 'POST',
url: 'submit.php',
dataType: "json",
contentType: "application/json",
data : $('#myForm').serialize(),
success: function(data){
alert(data);
},
error: function(xhr, desc, err){
console.log(err);
}
});
});
});
});
</script>
</body>
</html>
<!-- submit.php -->
<?php
$value ="call";
header('Content-Type: application/json');
echo json_encode($value);
?>