【问题标题】:Ext JS 4.1.3: Returning values with Ext.Ajax.requestExt JS 4.1.3:使用 Ext.Ajax.request 返回值
【发布时间】:2012-12-21 09:39:35
【问题描述】:

这可能是一个愚蠢的问题,但我一直在努力解决我的 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 请求之外使用?我当然可以写入全局变量,但我怀疑这是正确的方法。

任何建议表示赞赏。

【问题讨论】:

    标签: javascript ajax extjs extjs4.1


    【解决方案1】:

    您根本不能这样做,因为getInvestmentFee_Percentage 将(可能)在successfailure 回调方法被调用之前退出,但无论如何它们都在不同的范围内。

    所以只有 (a) 回调方法能够返回一个值,但这将(最常见)在回调方法的范围内完成。当然,您可以在当前函数中定义回调方法,但都是一样的,您的方法将退出。

    我想你应该在这里重新考虑你的实现。

    • 一种方法可以使用getInvestmentFee_Percentage 的调用者订阅的自定义事件
    • 或者getInvestmentFee_Percentage 的调用者发送一个回调(如果需要一个范围)作为参数,然后您可以使用它

    两者都可以。

    【讨论】:

    • 关于如何实现这两种方式的任何想法都会有所帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多