阅读JSON与jQuery
问题描述:
我想加载一个JSON文件并阅读下列数据阅读JSON与jQuery
{
"extTitle": {
"message": "test1"
},
"extName":{
"message": "test2"
}
}
这是我的加载数据
function loadLocales(){
var userLang = (navigator.language) ?
navigator.language : navigator.userLanguage;
switch(userLang){
default:
$.getJSON("_locales/ne/messages.json", function(data){
return data;
});
break;
}
}
当我尝试用下面的函数我读得到一个
i18n undefined error
。
function getValue(key){
var i18n = loadLocales();
return i18n[key].message;
}
任何想法?
答
这是因为Ajax是异步的。从成功回调中返回某些内容是不可能的。 (有一个“同步”选项,但这对于一系列字典查找来说是不可能的)。
您需要重新构建程序的流程,以便操作(无论它是什么 - 填充标签或例如具有值的其他元素)发生在Ajax调用的成功回调中。
$.getJSON("_locales/ne/messages.json", function(data){
// For example, populate an element with an item from the JSON
$("#element").html(data.message);
});
hm我想开发某种本地化功能来支持不同的语言,你认为我建议这样做的方式吗? – 2011-02-23 15:48:07
@艺术这是一个大问题。见例如http://*.com/questions/48726/best-javascript-i18n-techniques-ajax-dates-times-numbers-currency或http://*.com/questions/3084675/internationalization-in-javascript ... 。我通常倾向于预先加载我要在文档头部使用的所有单词。我希望使用Ajax加载翻译可能通常太慢 – 2011-02-23 15:50:53