【问题标题】:Need help to access data between json string and object using jquery需要帮助来使用 jquery 访问 json 字符串和对象之间的数据
【发布时间】:2013-09-23 22:05:18
【问题描述】:

我在使用 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 的每个值。

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

【问题讨论】:

  • 你没有在 php 中这样做是有原因的吗?
  • 在 PHP 中唯一要做的是 MySQL 请求生成 jSon 字符串,然后是 javascript/jquery 读取 jSon 字符串并在 html 代码中使用用户语言中的正确值标签更改每个 label_xxx

标签: php jquery json


【解决方案1】:

我相信问题出在您的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/

【讨论】:

    【解决方案2】:

    我希望这会奏效-

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

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多