需要帮助使用jquery访问json字符串和对象之间的数据

时间:2013-09-23 13:52:19

标签: php jquery json

我有一个问题,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的每个值。

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

2 个答案:

答案 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++;
    }