jQuery - .ajax使函数失败

时间:2013-09-16 03:23:30

标签: javascript jquery ajax

我有一个返回数据的函数:

function getData(){
   return {result:[{},{},{}...]};
}

此功能完美无缺。现在我想动态生成数据。我使用以下方法生成数据,但是它没有用完:

function getData(){
   $.ajax({
      //...
      async: false,
      success: function(data, textStatus, jqXHR){
         return {result:[{},{},{}...]}; 
      }
   });
}

有些人可以为我提供一些提示或指出我正确的方向吗?谢谢。

2 个答案:

答案 0 :(得分:4)

您必须从外部函数返回数据:

function getData () {

   var data;

   $.ajax({
      //...
      async: false,
      success: function(data, textStatus, jqXHR){
         data = {result:[{},{},{}...]}; 
      }
   });

   return data;
}

但是,您不应该使用同步AJAX请求。这将冻结所有执行,直到请求完成。

相反,返回$.ajax调用返回的承诺,并在您的调用代码中使用该承诺:

function getData () {
   return $.get('/path/to/recourse');
}

getData().then(function (results) {
    // use results here...
});

答案 1 :(得分:3)

从不这样做(使用async:false),它将阻止浏览器线程,直到响应来自服务器,这将冻结用户体验,直到响应返回。

您只是从内部函数返回,而不是从getData

返回
function getData(){
   var result;
   $.ajax({
      //...
      async: false,
      success: function(data, textStatus, jqXHR){
         result = {result:[{},{},{}...]}; 
      }
   });
   return result
}

然后如何正确地执行 ... 在SO本身中有成千上万的线程 ......一个着名的线程是How to return the response from an AJAX call < / p>