我正在尝试追加以下JSON数据:
[
{
"idfruits": "1",
"fruit": "Apple"
},
{
"idfruits": "2",
"fruit": "Orange"
},
{
"idfruits": "3",
"fruit": "Banana"
},
{
"idfruits": "4",
"fruit": "Raspberry"
},
{
"idfruits": "5",
"fruit": "Coconut"
}
]
使用以下代码:
<script type="text/javascript">
$(function () {
jQuery.ajax({
url: "index.php",
type: "POST",
dataype: "json",
async: false,
success: function (data) {
console.log(data);
var items = [];
$.each(data, function (key, fruit_info) {
items.push('<li id="fruit_' + fruit_info.idfruits + '">' + fruit_info.fruit + '</li>');
});
$(items.join('')).appendTo('#listy');
}
});
});
</script>
不幸的是,代码会出现以下错误:
TypeError: invalid 'in' operand obj
typeof length === "number" && length > 0 && ( length - 1 ) in obj );
我的目标是制作一个泛型方法,始终将第一个JSON值解析为key
,将第二个JSON值解析为val
。这可能吗?
答案 0 :(得分:1)
没有。 ECMAScript指定哈希行为:http://bclary.com/2004/11/07/#a-8.6
对象是属性的无序集合。每个属性都包含名称,值和一组属性。
你不能假设给定像{"idfruits":"1","fruit":"Apple"}
这样的哈希值,id将是第一个,而果实将是第二个。您需要按名称调用它们。
顺便说一下,非常好的问题。
做你想做的事:
<script type="text/javascript">
$(function () {
jQuery.ajax({
url: "index.php",
type: "POST",
dataype: "json",
async: false,
success: function (data) {
console.log(data);
var items = [];
$.each(data, function (key, fruit_info) {
items.push('<li id="fruit_' + fruit_info.idfruits + '">' + fruit_info.fruit + '</li>');
});
$(items.join('')).appendTo('#listy');
}
});
});
</script>
答案 1 :(得分:0)
我认为您希望使用fruit
代替value
试试这个
$.each(data, function(key, val) {
items.push('<li id="' + this.fruit+ '">' + this.fruit + '</li>');
});