Javascript ajax中js封闭函数的返回值

Javascript ajax中js封闭函数的返回值,javascript,jquery,Javascript,Jquery,如何从封闭的js函数返回值? 我尝试了下一个示例,但它不起作用(它返回我: function executeCommand(data, func){ $.ajax({ type: 'POST', url: SERVERPATH+'Commands/', data: data, success: func, dataType: 'json' }); } function executeServiceOperation(data){ var result

如何从封闭的js函数返回值? 我尝试了下一个示例,但它不起作用(它返回我:

function executeCommand(data, func){                
$.ajax({
type: 'POST',
url: SERVERPATH+'Commands/',
data: data,
success: func,
dataType: 'json'
});     
}

function executeServiceOperation(data){
var result = null;
executeCommand(data,
result = (function(data,status){        
      if( status=='success' ){                                  
        return data.result;     
      }
      else return null;          
    })(data,status)
);
 return result; 
}

结果
每次都是空的。我想这是因为
状态
造成的。如何获取
状态
变量?谢谢。

不可能返回您从ajax函数获得的数据。相反,您必须分配一个函数,该函数将在ajax函数成功后被调用。

无法返回n从ajax函数获得的数据。相反,您必须分配一个函数,该函数将在ajax函数成功后被调用。

根据您的代码,您必须在第二个参数中传递一个函数,但您返回的是一个赋值(相当于“true”)。它将失败

相反,可以这样做:

executeCommand(data, function(data,status){ //function as second parameter       
    if( status=='success' ){                                  
       return data.result;     
    } else {
       return null;  
    }        
});
然而,这仍然是错误的。任何涉及AJAX的内容都是非同步的。因此,您不能从中“返回”任何内容。您应该做的是在“成功”发生时传递回调


上面的代码是以传统的回调方式编写的。您应该查看“甜”代码。

根据您的代码,您必须在第二个参数中传递一个函数,但返回的是赋值(相当于“true”)。它将失败

相反,可以这样做:

executeCommand(data, function(data,status){ //function as second parameter       
    if( status=='success' ){                                  
       return data.result;     
    } else {
       return null;  
    }        
});
然而,这仍然是错误的。任何涉及AJAX的内容都是非同步的。因此,您不能从中“返回”任何内容。您应该做的是在“成功”发生时传递回调

上面的代码是以传统的回调方式编写的。您应该看看是否有“甜”代码。

同意。有关如何使用jQuery延迟的示例,请参阅。同意。有关如何使用jQuery延迟的示例,请参阅。