如何使一个jQuery“ $。post”请求同步

2020/10/24 10:01 · javascript ·  · 0评论

我一直在使用此功能并在很长时间内避免在错误修复列表中出现此错误,但是我终于到达了列表的末尾,最后我必须使函数返回true / false以声明是否验证成功与否。

我正在使用ajax将某些字段与数据库中已经存在的字段进行比较,并且默认情况下该$.post()方法以异步方式进行操作。

我在调用内设置了一个变量onSuccess,因此,调用方法没有得到响应,因此我的所有js / jquery在pageLoad上都失败了...如果我仍然可以继续使用该$.post方法,我希望这样做

jQuery <1.8

我可以建议您使用,$.ajax()而不是$.post()因为它更具可定制性。

如果您正在致电$.post(),例如:

$.post( url, data, success, dataType );

您可以将其转换为$.ajax()等效项:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType,
  async:false
});

请注意参数对象async:false的末尾$.ajax()

在这里,您可以详细了解$.ajax()参数:jQuery.ajax()-jQuery API文档


jQuery> = 1.8“ async:false”弃用通知

jQuery> = 1.8不会在http请求期间阻止UI,因此只要处理请求,我们就必须使用一种解决方法来停止用户交互。例如:

  • 使用插件,例如BlockUI ;
  • 在调用之前手动添加叠加层$.ajax(),然后在调用AJAX.done()回调时将其删除

请看这个答案的例子。

如果要同步请求,请将请求的async属性设置false为。查看jQuery AJAX文档

从Jquery文档:您将async选项指定为false以获取同步Ajax请求。然后,您的回调函数可以在继续执行母函数之前设置一些数据。

如果按照建议进行更改,则代码如下所示:

beforecreate: function(node,targetNode,type,to) {
    jQuery.ajax({
         url:    url,
         success: function(result) {
                      if(result.isOk == false)
                          alert(result.message);
                  },
         async:   false
    });          
}

这是因为$ .ajax是唯一可以设置异步性的请求类型

本文地址:http://javascript.askforanswer.com/ruheshiyigejquery-postqingqiutongbu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!