提交带有 AJAX 的表单无效。它忽略 ajax
Submitting form with AJAX not working. It ignores ajax
我以前从未使用过 Ajax,但从这里的研究和其他帖子看来它应该能够 运行 表单提交代码而无需重新加载页面,但它好像不行。
它只是重定向到 ajax_submit.php,就好像 js 文件不存在一样。我试图使用 Ajax 到达 ajax_submit 而无需重新加载任何内容。
我正在尝试做的事情是否可行?
HTML形式:
<form class="ajax_form" action="ajax_submit.php" method="post">
<input class="input" id="license" type="text" name="license" placeholder="License" value="<?php echo htmlentities($person['license1']); ?>" />
<input class="input" id="license_number" type="text" name="license_number" placeholder="License number" value="<?php echo htmlentities($person['license_number1']); ?>" />
<input type="submit" class="form_button" name="submit_license1" value="Save"/>
<input type="submit" class="form_button" name="clear1" value="Clear"/>
</form>
在 scripts.js 文件中:
$(document).ready(function(){
$('.ajax_form').submit(function (event) {
alert('ok');
event.preventDefault();
var form = $(this);
$.ajax({
type: "POST",
url: "ajax_submit.php",//form.attr('action'),
data: form.serialize(),
success: function (data) {alert('ok');}
});
});
});
在ajax_submit.php中:
require_once("functions.php");
require_once("session.php");
include("open_db.php");
if(isset($_POST["submit_license1"])){
//query to insert
}elseif(isset($_POST['clear1'])) {
//query to delete
}
我有“<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
”
在html头
从表单中删除 "action" 和 "method" 属性。你不应该需要它们。
form.serialize()
不知道使用哪个按钮提交表单,因此它不能在结果中包含任何按钮。因此,当 PHP 脚本检查 $_POST
中设置了哪个提交按钮时,它们都不匹配。
不要在 submit
事件上使用处理程序,而是在按钮上使用单击处理程序,并将按钮的名称和值添加到 data
参数。
$(":submit").click(function(event) {
alert('ok');
event.preventDefault();
var form = $(this.form);
$.ajax({
type: "POST",
url: "ajax_submit.php",//form.attr('action'),
data: form.serialize() + '&' + this.name + '=' + this.value,
success: function (data) {alert('ok');}
});
});
您的 ajax 呼叫工作正常。您的代码几乎没有概念性错误 -
form.serialize() 不会附加提交按钮的信息。
如果你想清除你的表格,你可以使用类似这样的东西
$('#resetForm').click(function(){
$('.ajax_form')[0].reset();
});
- 最后完成你的任务 & return 成功或失败值 ajax 使用
echo
调用 echo 'successful'
或 echo failed
等。使用 else 条件用你的代码。你会更清楚。
我以前从未使用过 Ajax,但从这里的研究和其他帖子看来它应该能够 运行 表单提交代码而无需重新加载页面,但它好像不行。
它只是重定向到 ajax_submit.php,就好像 js 文件不存在一样。我试图使用 Ajax 到达 ajax_submit 而无需重新加载任何内容。
我正在尝试做的事情是否可行?
HTML形式:
<form class="ajax_form" action="ajax_submit.php" method="post">
<input class="input" id="license" type="text" name="license" placeholder="License" value="<?php echo htmlentities($person['license1']); ?>" />
<input class="input" id="license_number" type="text" name="license_number" placeholder="License number" value="<?php echo htmlentities($person['license_number1']); ?>" />
<input type="submit" class="form_button" name="submit_license1" value="Save"/>
<input type="submit" class="form_button" name="clear1" value="Clear"/>
</form>
在 scripts.js 文件中:
$(document).ready(function(){
$('.ajax_form').submit(function (event) {
alert('ok');
event.preventDefault();
var form = $(this);
$.ajax({
type: "POST",
url: "ajax_submit.php",//form.attr('action'),
data: form.serialize(),
success: function (data) {alert('ok');}
});
});
});
在ajax_submit.php中:
require_once("functions.php");
require_once("session.php");
include("open_db.php");
if(isset($_POST["submit_license1"])){
//query to insert
}elseif(isset($_POST['clear1'])) {
//query to delete
}
我有“<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
”
在html头
从表单中删除 "action" 和 "method" 属性。你不应该需要它们。
form.serialize()
不知道使用哪个按钮提交表单,因此它不能在结果中包含任何按钮。因此,当 PHP 脚本检查 $_POST
中设置了哪个提交按钮时,它们都不匹配。
不要在 submit
事件上使用处理程序,而是在按钮上使用单击处理程序,并将按钮的名称和值添加到 data
参数。
$(":submit").click(function(event) {
alert('ok');
event.preventDefault();
var form = $(this.form);
$.ajax({
type: "POST",
url: "ajax_submit.php",//form.attr('action'),
data: form.serialize() + '&' + this.name + '=' + this.value,
success: function (data) {alert('ok');}
});
});
您的 ajax 呼叫工作正常。您的代码几乎没有概念性错误 -
form.serialize() 不会附加提交按钮的信息。
如果你想清除你的表格,你可以使用类似这样的东西
$('#resetForm').click(function(){
$('.ajax_form')[0].reset();
});
- 最后完成你的任务 & return 成功或失败值 ajax 使用
echo
调用echo 'successful'
或echo failed
等。使用 else 条件用你的代码。你会更清楚。