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是一种奇怪的语言。 🙂