Ajax 提交表单有时有效,有时直接重定向到操作网址
Ajax submit Form sometimes works, sometimes redirects to the action-url directly
我在表格中显示了很多带有foreach循环的课程!每门课程都有自己的表格,带有ID和提交按钮!
<form id="kurs<?php echo $result["ID"]; ?>" name="kurs<?php echo $result["ID"]; ?>" action="test.php" method="POST">
...form-field..
<input type="submit" id="submitid" name="submit" class="btn btn-success btn-sm" value="Aktualisieren">
</form>
下面(在foreach内部)有这个脚本:
$("#submitid").click(function() {
$("#kurs<?php echo $result['ID']; ?>").submit(function(e) {
var postData = $(this).serialize();
var formURL = $(this).attr("action");
$.ajax({
url: formURL,
type: "POST",
data: postData,
success: function(data) {
$('#item-<?php echo $result["ID"]; ?>').addClass('bg-success border');
setTimeout(function() {
$('#item-<?php echo $result["ID"]; ?>').removeClass('bg-success border')
}, 1500);
}
});
e.preventDefault(); //STOP default action
e.unbind(); //unbind. to stop multiple form submit.
});
});
$("#kurs<?php echo $result['ID']; ?>").submit();
问题是它只工作 50%?
一半的时间表单正常提交,我登陆测试.php页面,其他时间,数据更新,行闪烁绿色几秒钟,因为它应该是!
当它起作用时它有效,当它不起作用时,我可以重新加载,也许然后它有效!
有人有想法吗?
编辑:我发现如果我通过单击第一个输入开始所有内容,一切正常。如果我从另一行开始,它不起作用!
问题是它只工作 50%?一半的时间表单正常提交,我登陆测试.php页面,其他时间,数据更新,行闪烁绿色几秒钟,因为它应该是!
我不明白为什么你有两个相同的.submit()
处理程序......
$("#submitid").click(function() {
$("#kurs<?php echo $result['ID']; ?>").submit(function(e) {
.....
// your ajax()
.....
});
});
$("#kurs<?php echo $result['ID']; ?>").submit(); // <-- same as above
一个在您的click
处理程序内部并包含ajax()
,另一个位于click
处理程序之外,并且只会提交到默认表单action
。 因此,完全可以理解的是,如果您的ajax()
到达的速度不够快,那么代码执行将到达第二个提交处理程序并提交到默认action
。 无论哪个.submit()
处理程序首先到达,都是获胜的那个......在你的情况下,真的是抛硬币。
表单中已经有一个真正的提交按钮,因此绝对没有理由使用任何click
处理程序函数,当然也没有理由使用两个submit
处理程序。
只需这样做...
$("#kurs<?php echo $result['ID']; ?>").submit(function(e) {
e.preventDefault();
var postData = $(this).serialize();
var formURL = $(this).attr("action");
$.ajax({
....
});
});
在你的
js submit函数的第一行放e.preventDefault()
好的,
我想我有问题了!
也许这不是最好的方法,我有嵌套函数,但我不知道如何以其他方式做到这一点,所以对我来说没关系;)
我还必须在提交按钮中添加唯一的 ID。
<input type="submit" id="submitid<?php echo $result["ID"]; ?>" name="submit" class="btn btn-success btn-sm" value="Aktualisieren">
和
$("#submitid<?php echo $result['ID']; ?>").click(function() {
相关文章:
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- 如何根据所选选项值重定向表单操作
- 访问NeedLogin操作后不重定向到登录页面
- Ajax 提交表单有时有效,有时直接重定向到操作网址
- 更改“将图像另存为”的操作以重定向到相应的网页
- 使用javascript在新窗口中打开重定向操作
- 子操作不允许在我的模态形式中执行重定向操作
- 在视图中重定向会破坏原始控制器操作(Yii)
- jQuery:$.ajax() 重定向到其 URL 表单操作参数,而不是对表单操作执行 AJAX 请求
- 在操作上以 HTML 形式调用 php,但不重定向
- 如何添加将通过执行 JavaScript 代码重定向到另一个页面的动态操作
- 如何使用操作属性发送 html 表单数据而不重定向到另一个页面
- 修改 PHP 函数以在操作后重定向
- 使用 JavaScript 调用重定向到具有 asp.net MVC 应用程序的操作
- 硒网络驱动程序中的 Click() 操作没有帮助我重定向到另一个页面
- HTML 表单操作重定向
- javascript重定向到带有表单操作post的页面,然后返回到带有输入值的上一页
- 验证代码不起作用,直接重定向到操作路径
- 发布到iframe,但iframe将顶部窗口重定向到操作url,而不是self
- 未重定向用户的控制器操作是从AJAX调用的