阅读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); 
     }); 
+0

hm我想开发某种本地化功能来支持不同的语言,你认为我建议这样做的方式吗? – 2011-02-23 15:48:07

+0

@艺术这是一个大问题。见例如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