我有一个函数,我想从php文件中获取值:
var phrases = null;
function setPhrases(lang) {
$.getJSON(locationHostname()+'json?json=lang&lang='+lang,
function(json) {
phrases = json;
alert( 1 + ' ' + phrases);//phrases = [object Object]
});
alert( 2 + ' ' + phrases);//phrases = null
}
setPhrases('en');
alert(3+' '+phrases);//phrases = null
如何正确设置,即警报(3 +'+短语);获取一个对象而不是null?我想使用例如从getJSOn返回值的函数。
谢谢
答案 0 :(得分:2)
$.getJSON
是异步的,这就是你未定义的原因:当ajax调用仍在运行时执行alerts
您可以在成功事件上调用函数,并将json
作为参数传递,例如
function setPhrases(lang) {
$.getJSON(locationHostname()+'json?json=lang&lang='+lang,
function(json) {
continueProcessing(json)
}
);
}
function continueProcessing(obj) {
...
}
答案 1 :(得分:0)
你做不到。 .getJSON
以异步方式运行,除非速度很快,否则alert(2)
和alert(3)
将在完成之前运行。您需要将alert(2)
和alert(3)
作为成功函数的一部分,或使用Deferred
。
编辑:我想因为它是电子的,它可能 闪电般快,甚至还不够!
答案 2 :(得分:0)
由于phrases
的异步行为,我认为您无法在第三个alert()
获得$.getJSON()
。
答案 3 :(得分:0)
你应该使用回调方法。你的getJSON方法的问题是它是异步的。
示例:
function setPhrases(lang, callback) {
$.getJSON(locationHostname()+'json?json=lang&lang='+lang,
function(json) {
callback(json);
});
}
setPhrases('en',function(result) {
alert(result);
});