首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >$.post jQuery只在post函数内发出警报时才能工作

$.post jQuery只在post函数内发出警报时才能工作
EN

Stack Overflow用户
提问于 2016-04-19 18:23:53
回答 3查看 107关注 0票数 0

我的按钮是:

代码语言:javascript
代码运行次数:0
运行
复制
<button type="submit" name="submit" class="btn-primary btn-block"
          id="submit">Login</button>

我的表格是:

代码语言:javascript
代码运行次数:0
运行
复制
<form action="b.php" method="post" id="formID" onsubmit="return post();">

我的JS功能是:

代码语言:javascript
代码运行次数:0
运行
复制
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获取数据!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-19 19:00:21

如果您希望在提交表单之前完成异步$.post,则需要:

  • 通过在post函数中返回false,防止提交立即执行
  • 将一个成功的回调添加到您的$.post调用中,在其中手动提交表单。确保不通过jQuery触发提交(在jQuery对象上使用.trigger('submit').submit() )。这将导致无限循环,因为它将再次触发post函数。相反,使用get(0)获取原始DOM元素,并使用它提交表单,如下所示。

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
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/

票数 0
EN

Stack Overflow用户

发布于 2016-04-19 18:39:22

当您删除警报时,ajax将被异步触发,然后您的函数将立即不返回任何返回到onsubmit事件,这将导致表单提交和页面更改,甚至在ajax完成之前。

因为要将值返回到onsubmit事件,所以可以简单地向函数添加一个return false。这将防止默认操作(提交)并停止传播。

代码语言:javascript
代码运行次数:0
运行
复制
function post() {
    ...
    ...
    return false
}

编辑:

如果您需要在允许表单提交之前完成ajax,那么您应该如前所述返回false,但是在ajax中添加一个成功的处理程序来手动提交表单。

代码语言:javascript
代码运行次数:0
运行
复制
function post()
{   
  var cvs = $('#client-nbr').val();
  var cs = $('#cs').val();
  $.post('a.php',{postcvs:cvs,postch1:cs}, function(){
      $('#formID')[0].submit();
  });
}
票数 1
EN

Stack Overflow用户

发布于 2016-04-19 18:31:49

onsubmit是可取消事件(onsubmit.asp),如果您的"post“函数返回false,提交过程取消。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36726515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档