使用$.each在Json数据上进行jquery循环。

30 浏览
0 Comments

使用$.each在Json数据上进行jquery循环。

我在一个名为data的变量中返回了以下JSON数据。

这是返回的JSON数据...

[

{"Id": 10004, "PageName": "club"},

{"Id": 10040, "PageName": "qaz"},

{"Id": 10059, "PageName": "jjjjjjj"}

]

我尝试使用$.each循环遍历这个集合,但是遇到了一个显示undefined的问题。我尝试了很多不同的语法,但似乎无法解决这个问题。

我正在使用的JQuery代码是

$.each(data, function(i, item) {
    alert(item.PageName);
});

有人可以指点我正确的方向吗?

编辑

这是我用来获取数据的代码

$.getJSON('/Cms/GetPages/123', null, function(data) {
  fillSelect(data);
});

并且这是在回调时调用的函数

function fillSelect(data) {
  alert(data);
  $.each(data, function(i, item) {
    alert(item.PageName);
  });
}

编辑2

这有点让我困惑,根据文档,我应该按照我现在的方式来做,但实际上不起作用。根据Fiddler的显示,头部显示为:

Content-Type: application/json; charset=utf-8

而上面的JSON格式是完全正确的。我使用的是Chrome浏览器,不知道是否有所不同。将在IE和FF中进行测试...

编辑3

使用$.get生成了以下结果

"[\r\n {\r\n \"Id\": 10041,\r\n \"PageName\": \"01234567890\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10001,\r\n \"PageName\": \"about\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10056,\r\n \"PageName\": \"fdgdfgdfg\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10052,\r\n \"PageName\": \"hjkhjk\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10059,\r\n \"PageName\": \"jjjjjjj\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10057,\r\n \"PageName\": \"qqqqq\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10054,\r\n \"PageName\": \"qwqw\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n }\r\n]"

0
0 Comments

问题的原因是数据没有正确转换为JavaScript对象。解决方法是使用eval函数或JSON.parse函数将数据转换为JavaScript对象。另外,还可以使用jQuery的$.parseJSON函数进行转换。此外,还需要检查JSON数据是否有语法错误,例如缺少引号或括号。代码中还提到了使用eval函数时可能存在兼容性问题,建议使用eval('('+string_data+')')来确保正确转换。最后,还提到了jQuery.parseJSON函数在某些情况下可能会失败,而eval函数正常工作。

0
0 Comments

问题出现的原因:

上述代码中,使用了jQuery的$.each方法对JSON数据进行循环遍历并输出每个元素的number属性。然而,可能会出现以下问题导致代码不起作用或者报错:

1. JSON数据格式错误:JSON.parse方法可能无法正确解析result变量中的数据,导致无法获取有效的JSON对象。

2. result变量为空:result变量可能没有被正确赋值,或者赋值为null或undefined,导致无法解析JSON数据。

3. number属性不存在:JSON数据中的每个元素可能不存在number属性,导致无法获取到正确的值。

解决方法:

1. 确保JSON数据格式正确:使用开发者工具或其他方式检查result变量中的数据是否符合JSON格式要求。

2. 检查result变量是否正确赋值:确保result变量被正确初始化,并且赋值为包含有效JSON数据的字符串。

3. 检查JSON数据中的属性:确保JSON数据中的每个元素都有number属性,或者在代码中添加判断逻辑,避免处理不存在number属性的元素。

完整代码如下:

$.each(JSON.parse(result), function(i, item) {
    alert(item.number);
});

以上代码可以使用jQuery的$.each方法循环遍历JSON数据,并输出每个元素的number属性。在使用这段代码时,需要确保JSON数据格式正确,result变量被正确赋值,并且JSON数据中的每个元素都有number属性。这样才能保证代码正常执行,避免出现错误。

0
0 Comments

问题的原因是在第一段代码中,使用了$.each()函数对json数据进行遍历,并成功地弹出了每个对象的PageName属性。然而,在第二段代码中,将json数据存储在一个名为data.result的变量中,并尝试使用$.each()函数对其进行遍历,但却无法成功弹出对象的PageName属性。

解决方法是使用eval()函数来解析data变量中的json数据,然后再对其进行遍历。在第三段代码中,使用$.get()函数从服务器获取数据,并将返回的数据传递给回调函数。在回调函数中,将使用eval()函数解析返回的数据,并使用$.each()函数对其进行遍历,成功地弹出每个对象的PageName属性。

然而,使用eval()函数会存在一些潜在的安全风险,因此最好避免使用它。在第四段代码中,建议查看服务器返回的数据格式,并根据实际情况进行调整,以避免使用eval()函数。

最后,还提到了在jQuery的httpData函数中使用了window["eval"]来处理json数据。然而,实际上不需要使用eval()函数,因为jQuery已经提供了处理json数据的功能。

总结起来,问题的原因是在对json数据进行遍历时出现了错误,解决方法是使用eval()函数来解析json数据,但最好避免使用eval()函数。同时,还提到了一些关于jQuery的httpData函数和服务器返回数据格式的内容。

0