JavaScript/Jquery同步调用控制器

JavaScript/Jquery同步调用控制器,javascript,jquery,ajax,Javascript,Jquery,Ajax,我需要在Javascript中同步调用控制器(url)。我可以使用Ajax函数来实现这一点,如下所示: $.ajax({ type: 'POST', url: BASE + '/publication/storeWorldCat', data: data, success: success, dataType: dataType, async:false }); 我不明白为什么我应该使用带有async:false参数的Ajax函数,因为Ajax从定义上讲是异步的$pos

我需要在Javascript中同步调用控制器(url)。我可以使用Ajax函数来实现这一点,如下所示:

$.ajax({
  type: 'POST',
  url: BASE + '/publication/storeWorldCat',
  data: data,
  success: success,
  dataType: dataType,
  async:false
});
我不明白为什么我应该使用带有
async:false
参数的Ajax函数,因为Ajax从定义上讲是异步的
$post()
也是异步的

有更好的办法吗

谢谢你的帮助

查看(引用):

默认情况下,发送所有请求 异步(即设置为
true(默认情况下为
)。如果你需要 同步请求,设置此选项 至
false

因此,任何以Javascript发送的请求,如果不是异步发送的,或者没有使用XML作为数据格式,从技术上讲,都不应该称为AJAX请求。随着如今JSON的流行,它看起来像是
$。ajax
函数的名称非常糟糕,因为它允许任何数据格式

但是许多其他的首字母缩略词被选择为容易发音,但代价是不完全正确,我认为我们可以接受它。因此,要回答您的问题:

为什么jQuery团队决定将此函数命名为ajax?因为这个首字母缩略词已经被每个人使用,不管使用的数据格式和“同步性”。为什么每个人都错误地使用这个首字母缩略词?可能是因为为每种数据格式创建一个新的首字母缩略词是没有意义的,每次都有一个可选的“a”,表示它是否异步

为什么[您]应该使用带有
async:false
参数的Ajax函数,因为Ajax定义为异步的

嗯,你不必:

$.sendRequest = $.ajax
现在,您可以在代码中使用名称更好的函数。您甚至可以更改默认行为:

$.sendRequest = function(options) {
  if (typeof options.async === undefined) {
    options.async = false;
  }
  $.ajax.apply($, arguments);
}

我也不明白为什么要使用同步ajax调用?所以基本上你想要一个函数
$.jax()
,默认情况下将
async
设置为false。。。谢谢你完整的回答!我现在更明白了:-)非常感谢!我看你还没有接受你的问题的答案,当你对答案满意时,考虑这样做: