1

我在使用 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) 每个标签的 undefined 或 2) 每个 label_xxx 的 label_xxx 我需要帮助才能访问每个 label_xxx 的每个值。

我无法获得价值,这是我最后一次尝试......

4

2 回答 2

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/

于 2013-09-23T14:00:43.803 回答
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++;
    }
于 2013-09-23T14:05:18.447 回答