Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何/是否重写async:false AJAX函数?_Javascript_Jquery_Ajax_Asynchronous - Fatal编程技术网

Javascript 如何/是否重写async:false AJAX函数?

Javascript 如何/是否重写async:false AJAX函数?,javascript,jquery,ajax,asynchronous,Javascript,Jquery,Ajax,Asynchronous,我使用带有async:false的AJAX调用返回数据,如下所示: var my_data = my_function(10, 20); function my_function(value1, value2) { var returnData; $.ajax({ type: 'POST', url: 'my_function.php', data: { variable1: value1, variable2: value2 },

我使用带有
async:false
的AJAX调用返回数据,如下所示:

var my_data = my_function(10, 20);

function my_function(value1, value2) {
    var returnData;
    $.ajax({
      type: 'POST',
      url: 'my_function.php',
      data: { variable1: value1, variable2: value2 },
      success: function(data) { returnData = data; },
      async:false
    });
    return returnData;
};
请注意,我已经设置了
async:false
,这在我的代码上下文中是必需的,并且可以完美地工作

但是,在JQuery API中,为异步上的条目提供了以下消息:

从jQuery1.8开始,在jqXHR($.Deferred)中使用async:false是不正确的 不赞成;您必须使用成功/错误/完成回调选项 而不是jqXHR对象的相应方法,例如 jqXHR.done()或不推荐使用的jqXHR.success()

我很难理解关于我的函数的警告,因为我没有在我的例程中使用
$;这个警告可能在某种程度上仍然适用,我并不欣赏。那么,让代码保持原样是安全的吗?还是应该根据
async
的反对意见重写代码?如果是,应该如何重写?(我需要同步执行该功能。)


非常感谢

您提供的代码看起来不错。以下是不推荐使用的版本(请勿执行此操作):


您提供的代码看起来不错。以下是不推荐使用的版本(请勿执行此操作):


为什么需要使用同步请求?如果希望继续使用同步请求,可以使用本机Js Ajax请求(使用
XMLHttpRequest
),而不是jQuery的请求。它不仅在jQuery中不受欢迎,而且(在webworkers之外)。Chrome至少已经显示了警告,但不确定其他浏览器是否会显示警告。期望它在某个时候停止工作-我不会在任何新代码中使用它。如果您使用async:false作为确保ajax在执行其他操作之前完成的一种方法,那么您可能能够使用承诺来实现您的目标。我很惊讶没有人对这个问题提供有效的答案。问题很简单。为什么需要使用同步请求?如果希望继续使用同步请求,可以使用本机Js Ajax请求(使用
XMLHttpRequest
),而不是jQuery的请求。它不仅在jQuery中不受欢迎,而且(在webworkers之外)也不受欢迎。Chrome至少已经显示了警告,但不确定其他浏览器是否会显示警告。期望它在某个时候停止工作-我不会在任何新代码中使用它。如果您使用async:false作为确保ajax在执行其他操作之前完成的一种方法,那么您可能能够使用承诺来实现您的目标。我很惊讶没有人对这个问题提供有效的答案。问题很简单。
var my_data = my_function(10, 20);

function my_function(value1, value2) {
    var returnData;
    $.ajax({
      type: 'POST',
      url: 'my_function.php',
      data: { variable1: value1, variable2: value2 },
      async:false
    }).success(function(data) { returnData = data; });
   return returnData;
};