我的按钮是:

<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/

10-12 12:54
查看更多