我在PHP中打印<ul>
数组$_SESSION['words']
。
// PHP print new words as links
echo '<ul id="wordlist">';
foreach($_SESSION['words'] as $word => $description) {
echo '<li id="wordlist"><a href="#">' . $word . '</a></li>';
}
数组很简单 - 单词存储为键,单词的描述将是值,例如
array(5) { ["word1"]=> int(1) ["word2"]=> int(2) ["word3"]=> int(3) ["word4"]=> int(4) ["word5"]=> int(5) }
我打算通过选择$word
并添加$description
并将其添加到数组中来操作数组中的项目,所以我想我将使用jQuery来完成它。
我的问题是:如果我从这个PHP数组创建一个JSON数组,我可以用同样的方式打印它并操作它吗?我用$myJSON = json_encode($_SESSION['words']);
编码了它,但我已经卡住了试图从JSON打印出键/值!感谢...
答案 0 :(得分:2)
您可以使用$.parseJSON
:
var json = $.parseJSON('your json');
alert(json.word1);
alert(json.word2);
如果您的JSON数据可通过网址获得,则可以使用$.getJSON
答案 1 :(得分:1)
如果不习惯$ .each方法,也可以尝试旧的数组循环:
$.ajax({
url: '',
dataType: 'json',
success: function(arrayData) {
var i,max=arrayData.length;
for(i=0;i<max;i++){
var rowItem = arrayData[i];
try{
console.log(rowItem.attr1);
}catch(ex){
alert(ex);///in case data is not complete
}
});
}
});
如果您已经拥有JSON字符串,请说strJson ='[{attr1:“hello”},{attr1:“world”}]';
var tmp = 'var data = '+strJson;
///so you got : var data = [{attr1:"hello"},{attr1:"world"}]
eval(tmp);/// execute the above line
alert(data.length + "first item:"+data[0].attr1);
答案 2 :(得分:1)
您的描述向我表明您没有以任何方式使用JSON,除了使用PHP的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
属性。接下来,我通过将单词值替换为单词描述来更新无序列表。
修改强>
如果要遍历对象中的属性,可以执行以下操作:
for (var key in myWordList) {
if (myWordList.hasOwnProperty(key)) {
console.dir(myWordList[key]);
}
}
答案 3 :(得分:0)
您需要通过AJAX和
获取JSON$.ajax({
url: '',
dataType: 'json',
success: function(response) {
$.each(response, function(key, val) {
console.log(key); // word1, word2, word3...
console.log(val); // 1, 2, 3...
....
});
}
});