あなたの説明は、PHPのJSONエンコーディング関数を使用する以外の方法でJSONを使用していないことを示しています。PHP連想配列をJSON文字列にエンコードしてから、その文字列をHTML出力に書き込んでいるようです。この場合、JSONは実際にはJavaScriptオブジェクトです。
したがって、結果のマークアップが次のようになると仮定しましょう。
<script>
// Using a global here, which is not good,
// but this is an example.
var myWordList = {"word1":1,"word2":2,"word3":3};
</script>
<ul id="wordlist">
<li id="word1">1</li>
<li id="word2">2</li>
<li id="word3">3</li>
</ul>
私のid属性値が一意であることに注意してください。同じid属性値を複数回使用しました。それは無効なマークアップです。また、この例では、各リスト要素のマークアップを単純にしています(テキストのみ)。
したがって、このマークアップがあれば、次のJavaScriptを記述できます。
<script>
// Update our wordlist object with some descriptions
myWordList.word1 = {
"value": myWordList.word1,
"description": "This is word 1."
};
myWordList.word2 = {
"value": myWordList.word2,
"description": "This is word 2."
};
myWordList.word3 = {
"value": myWordList.word3,
"description": "This is word 3."
};
// Now lets update the unordered list with jQuery
for (var i = 1; i < 4; i += 1) {
$('#word' + i).html(myWordList['word' + i].description);
}
</script>
このJavaScriptでは、最初myWordList
に各値に新しいオブジェクトを割り当てて値を更新します。value
これらの新しいオブジェクトには、古いmyWordList.word#
値が割り当てられたdescription
プロパティと、単語を説明する新しいプロパティの2つのプロパティがあります。次に、単語の値を単語の説明に置き換えて、順序付けされていないリストを更新します。
編集:
オブジェクトのプロパティをループする場合は、次のように実行できます。
for (var key in myWordList) {
if (myWordList.hasOwnProperty(key)) {
console.dir(myWordList[key]);
}
}