我的按钮是:
<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
,并且当我在return false
函数中使用post()
时,该函数可以在a.php
上运行,但是页面冻结,我无法从b.php
获取数据! 最佳答案
鉴于您希望异步$.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/关于javascript - $ .post jQuery仅在发布函数内部警报时起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36726515/