一尘不染

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

javascript

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

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

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


阅读 566

收藏
2020-05-01

共1个答案

一尘不染

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()-jQueryAPI文档。


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

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

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