我的按钮是:
<button type="submit" name="submit" class="btn-primary btn-block"
id="submit">Login</button>
我的表格是:
<form action="b.php" method="post" id="formID" onsubmit="return post();">
我的JS功能是:
function post()
{
var cvs = $('#client-nbr').val();
var cs = $('#cs').val();
$.post('a.php',{postcvs:cvs,postch1:cs});
alert("Post Function work");
}
我的问题是:当我从alert
函数中删除post()
函数时,它不会发布到a.php
,而且当我在post()
函数中使用return false
时,该函数在a.php
上工作,但是页面冻结了,无法从b.php
获取数据!
发布于 2016-04-19 11:00:21
如果您希望在提交表单之前完成异步$.post
,则需要:
post
函数中返回false,防止提交立即执行$.post
调用中,在其中手动提交表单。确保不通过jQuery触发提交(在jQuery对象上使用.trigger('submit')
或.submit()
)。这将导致无限循环,因为它将再次触发post
函数。相反,使用get(0)
获取原始DOM元素,并使用它提交表单,如下所示。试试这个:
function post() {
var cvs = $('#client-nbr').val();
var cs = $('#cs').val();
$.post('a.php',{postcvs:cvs,postch1:cs}, function() {
//Manually submit form
$('#formID').get(0).submit()
});
return false;
}
有关为$.post
添加回调的详细信息,请参阅https://api.jquery.com/jQuery.post/。
发布于 2016-04-19 10:39:22
当您删除警报时,ajax将被异步触发,然后您的函数将立即不返回任何返回到onsubmit
事件,这将导致表单提交和页面更改,甚至在ajax完成之前。
因为要将值返回到onsubmit事件,所以可以简单地向函数添加一个return false
。这将防止默认操作(提交)并停止传播。
function post() {
...
...
return false
}
编辑:
如果您需要在允许表单提交之前完成ajax,那么您应该如前所述返回false,但是在ajax中添加一个成功的处理程序来手动提交表单。
function post()
{
var cvs = $('#client-nbr').val();
var cs = $('#cs').val();
$.post('a.php',{postcvs:cvs,postch1:cs}, function(){
$('#formID')[0].submit();
});
}
发布于 2016-04-19 10:31:49
onsubmit是可取消事件(onsubmit.asp),如果您的"post“函数返回false,提交过程取消。
https://stackoverflow.com/questions/36726515
复制