Jquery ajax 请求无法将数据返回给其他函数

Jquery ajax request not able to return data to other function

本文关键字:返回 其他 函数 数据 ajax 请求 Jquery      更新时间:2023-09-26

我正在使用jquery发出一个简单的ajax请求。下面是我的 ajax 函数。

     var makeJqueryAjaxRequest = function(arrParam) {
         var request = $.ajax({
             url : arrParam['url'],
             async: false,
             type: arrParam['type'],
             data: arrParam['data'],
             dataType: arrParam['data_type'],
             success: function(data) {
                 if(data){ 
                 return data;   
                 }
             }
         });
     }

这是我的函数调用:

      var items = {
       "type" : 'POST',
       "url" : ajaxGetUrl,
       "data" : arrParam['data'],
       "data_type" : 'html'
      };
      var msg = makeJqueryAjaxRequest(items);

现在不知道为什么我的makeJqueryAjaxRequest函数总是返回null值。如果我在成功中提醒数据:我得到的数据是完美的.但是当我尝试返回时,它给了我空值

不能从异步回调函数返回值。

因为success是一个async回调,当ajax Event(在本例中为成功)触发时,jQuery会调用它。因此,从此函数返回某些内容不会有任何影响,因为它们将返回到 jQuery 代码。

您可以使用以下内容

var makeJqueryAjaxRequest = function(arrParam) {
     var request = $.ajax({
        url : arrParam['url'],
        async: false,
        type: arrParam['type'],
        data: arrParam['data'],
        dataType: arrParam['data_type']
     });
   return request;
  }

然后做

 makeJqueryAjaxRequest(items).done(function(data){
    if(data){
      var msg  = data;  
      // do whatever you like with msg now
    }
 });

替代回调方法:

var makeJqueryAjaxRequest = function(arrParam,callback) {
     var request = $.ajax({
        url : arrParam['url'],
        async: false,
        type: arrParam['type'],
        data: arrParam['data'],
        dataType: arrParam['data_type'],
        success: function(data) {
           if(data){ 
              callback(data); 
           }
       }
     });
  }

然后像使用它一样

 makeJqueryAjaxRequest(items,function(data){
    // do whatever you like with data
 });

$.ajax()上的文档

注意

使用这两种方法中的任何一种async: false都没有必要。您可以删除它。正如文档所说

从jQuery 1.8开始,不推荐使用async:false