getJSON和javascript中的变量范围

为了对我们的后端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的函数可以访问响应值?

你可以使用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);

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

$ .post(“ActionProxy.php?method =”+ action,{data:input},function(data,textStatus,xhr){
如果(回调){
回调(数据); }
});

}

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