javascript - ajax中js封装函数的返回值

标签 javascript jquery

如何从封闭的 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; 
}

result 每次都是 null。我认为这是因为状态而发生的。如何获取 status 变量?谢谢。

最佳答案

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

相反,做这样的事情:

executeCommand(data, function(data,status){ //function as second parameter       
    if( status=='success' ){                                  
       return data.result;     
    } else {
       return null;  
    }        
});

但是,它仍然是错误的。任何涉及 AJAX 的事情都是异步的。因此你不能从中“返回”任何东西。您应该做的是当“成功”发生时传递回调。

function executeServiceOperation(data, callbacks){

    //do some set-up stuff you want

    executeCommand(data,function(data,status){        
        if( status === 'success'){                              
            callbacks.success(data.result) //execute callback with result
        } else {
            callbacks.fail(null);     //execute fail callback, with null if necessary
        }          
    });
);

executeServiceOperation(data, {
    success :function(result){
        //do something with result
    },
    fail : function(){
        //do something as if it returned null
    }
});

上面的代码是用传统的回调方式编写的。你应该看看Deferred Objects对于“糖”代码。

关于javascript - ajax中js封装函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458756/

相关文章:

javascript - 使用 Node Protractor js 连接 oracledb

javascript - HTML5 本地存储无法找到变量,即使 console.log 显示它

javascript - 传递匿名函数时如何更改 setTimeout 中的 this/context?

javascript - 有条件追加而不过滤

jquery - 创建一个点击函数以在 jquery datepicker 上设置新日期?

javascript - 当 DOM 树发生变化时更新事件处理程序

JavaScript/jQuery : hasDescendant/hasAncestor

jQuery 将 href 链接分配给其父元素

jquery - socket.io - 引用错误 : socket is not defined

javascript - codeigniter 获取 ajax post 文件