这可能是一个愚蠢的问题,但我在Ext JS 4.1.3应用程序中一直在努力使用以下代码:
getInvestmentFee_Percentage : function() {
var rVal = 0;
Ext.Ajax.request({
url : 'index.php/ajax/getcountryinvestmentfeepercentage/',
success : function(transport, json) {
try {
var JSONResponse = Ext.JSON.decode(transport.responseText);
} catch (e) {
return false;
}
if(JSONResponse.success == true || JSONResponse.success == "true") {
var investTax = 1+parseFloat(JSONResponse.results[0].constantValue);
console.log(investTax);
// TODO Return investTax
return investTax;
} else {
return false;
}
},
failure : function(transport, json) {
return false;
}
});
return rVal;
}
我正在尝试写入rVal
变量,但由于Ext.Ajax.request
是另一个对象,因此不会这样做。如何在AJAX请求之外返回值?我当然可以写入全局变量,但我怀疑这是正确的方法。
任何建议表示赞赏。
答案 0 :(得分:2)
你根本不能这样做因为getInvestmentFee_Percentage
将(可能)在调用success
或failure
回调方法之前退出但是无论如何它们都在不同的范围内。 / p>
因此只有(a)回调方法才能返回一个值,但这将(最常见的)在callback方法的范围内完成。当然,您可以在当前函数中定义回调方法,但它们将完全相同,您的方法将退出。
我想你应该在这里重新考虑你的实现。
getInvestmentFee_Percentage
的来电者订阅的自定义事件getInvestmentFee_Percentage
的调用者发送回调(如果需要,还有作用域)作为参数,然后可以使用两者都可以。