1

jSon文字列から各値を取得し、jSon文字列から取得した値でdivまたはspanまたはその他のIDを変更するjQueryに問題があります。

各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を使用して各label_xxxを値と一致させるJavaScriptがあります

私はこのような多くのhtmlコードを持っています

<title id="label_title></title>
<div id="label_settings"></div> 

また

<span id="label_subscription"></span>

これは、非表示の入力からjson文字列を取得するために呼び出したJavaScriptファイルの(部分的な)コードです。

    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 が正しく解析されていないことが原因である可能性があります。$.parseJSON(json)jQueryを使用しているので、いつでも確実に実行できます。

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 に答える