我有一个问题,jQuery从jSon字符串中获取每个值,并使用从jSon字符串获取的值修改div或span或其他id。
在每个PHP文件的开头,我有一个SQL请求生成一个带有jSon字符串作为值的隐藏输入。这适用于多语言,例如在英语中,生成的字符串是
<input type="hidden" id="page_json_language_home" value='{
"label_title":"My WebSite",
"label_settings":"Settings",
"label_subscription":"Subscription"
}' />
代表法语:
<input type="hidden" id="page_json_language_home" value='{
"label_title":"Mon site web",
"label_settings":"Parametres",
"label_subscription":"Abonnement"
}' />
这很好用!
之后我有一个使用jquery的javascript来匹配每个label_xxx的值
我有很多像这样的HTML代码
<title id="label_title></title>
<div id="label_settings"></div>
或
<span id="label_subscription"></span>
这是我的javascript文件中的(部分)代码,我调用它来从隐藏输入中获取json字符串:
var _getPageJsonLanguage = function(id) {
if (!id)
id = "page_json_language";
else
id = "page_json_language_" + id;
var json = $("#" + id).val();
var data = bsc.data.jsonParse(json);
return data;
};
这也很好用!
问题中的代码是:
data_language = bsc.page.getPageJsonLanguage("home");
var j = 0;
var language = [];
for (i in data_language) {
console.log("i in language = " + i);
language[j] = i;
console.log("language[j] = " + language[j]);
$("#" + i).html(language[j]);
j++;
}
我可以在浏览器1中获得每个标签的未定义结果或2)每个label_xxx的label_xxx 我需要帮助来访问每个label_xxx的每个值。
我无法获得价值,这是我的最后一次尝试......
答案 0 :(得分:2)
我认为问题出在你的for in
循环中,你从来没有真正抓住价值,只有关键:
for (i in data_language) {
console.log("i in language = " + i);
language[j] = data_language[i]; //changed this line to actually grab the value
console.log("language[j] = " + language[j]);
$("#" + i).html(language[j]);
j++;
}
如果您收到undefined
,可能是因为未正确解析JSON。由于您使用的是jQuery,因此您始终可以运行$.parseJSON(json)
。
在for in
循环中访问您的JSON并记录:http://jsfiddle.net/tymeJV/CKBLc/1/
答案 1 :(得分:1)
我希望这会奏效 -
var data_language = JSON.parse($("#page_json_language_home").val());
var language = [];
var j = 0;
for (i in data_language) {
console.log("i in language = " + i);
language[j] = data_language[i];
console.log("language[j] = " + language[j]);
$("#" + i).html(language[j]);
j++;
}