getJSON和javascript中的变量范围

时间:2010-06-02 18:25:08

标签: javascript jquery scope

为了对我们的后端php代码进行函数调用,我们实现了一个叫做ActionProxy的东西:

function ActionProxy(action, input, callback){  
    $.post("ActionProxy.php?method="+action, 
        { data: input},   
            function(data, textStatus, XMLHttpRequest){
                        //return data.ResponseWhatever
                        }
});

我们遇到的问题是,由于可变范围限制(我们假设),使用ActionProxy外部的数据是不可能的,设置
var res = data.ResponseWhatever

return data.ResponseWhatever

非常徒劳。如何最恰当地处理这些响应,以便调用actionproxy的函数可以访问响应值?

2 个答案:

答案 0 :(得分:1)

您可以使用window.ResponseWhatever = data.ResponseWhatever,但这不是最聪明的事情。你想要的是做这样的事情:

function ActionProxy(action, input, callback){
    $.post("ActionProxy.php?method="+action, {data:input},
        function(data, textStatus, xhr){callback(data);});
}

注意:我不是jQuery-guru,所以我可能错误地得到了一些jQuery部分,但重点是你要调用return data而不是调用callback(data);

答案 1 :(得分:0)

好吧,我确实解决了Alxandr提供的解决方案。事实证明,如果我想要结果,我将不得不实现一个回调,但为了不关心结果我只用前两个参数调用ActionProxy并检查回调函数是否存在如下:
function ActionProxy(action, input, callback){

$.post("ActionProxy.php?method="+action, {data:input}, function(data, textStatus, xhr){
if(callback){
callback(data); }
});

}

我希望在使用两个参数调用三参数函数时出错。哦,好吧 - javascript是一种奇怪的语言。 :)

相关问题