programing

각각 $.를 사용하여 Json 데이터에 대한 jquery 루프

iphone6s 2023. 3. 8. 20:50
반응형

각각 $.를 사용하여 Json 데이터에 대한 jquery 루프

다음 JSON이 data라는 변수로 반환되었습니다.

이건 돌려받은 JSON이야...

[ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "jjjjjjj"}
]

각각 $.를 사용하여 수집을 루프하려고 하는데 경고가 정의되지 않은 상태로 표시되는 문제가 발생하고 있습니다.나는 많은 다른 구문들을 시도해봤지만 이것을 이해할 수 없을 것 같다.

사용하고 있는 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);
  });
}

EDIT 2 이것은 약간 혼란스럽습니다.의사에 따르면 그것은 제가 가지고 있는 그대로 작동해야 하지만, 그렇지 않습니다.피들러에 따르면 헤더는 다음과 같이 표시됩니다.

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

위의 JSON은 정확하게 맞습니다.뭔가 다르다면 크롬을 사용하고 있습니다.IE 및 FF로 테스트합니다.

편집 3

$.get products 사용

"[\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]"
var data = [ 
 {"Id": 10004, "PageName": "club"}, 
 {"Id": 10040, "PageName": "qaz"}, 
 {"Id": 10059, "PageName": "jjjjjjj"}
];

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

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

이러한 두 가지 옵션은 다음과 같은 경우를 제외하고 잘 작동합니다.

var data.result = [ 
 {"Id": 10004, "PageName": "club"}, 
 {"Id": 10040, "PageName": "qaz"}, 
 {"Id": 10059, "PageName": "jjjjjjj"}
];

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

편집:

이것으로 시험해 보고 결과를 설명하다

$.get('/Cms/GetPages/123', function(data) {
  alert(data);
});

편집 3의 경우:

이는 문제를 해결하지만 "eval"을 사용하기 위한 아이디어는 아닙니다. '/Cms/GetPages/123'에서 응답이 어떻게 되는지 확인해야 합니다.

$.get('/Cms/GetPages/123', function(data) {
  $.each(eval(data.replace(/[\r\n]/, "")), function(i, item) {
   alert(item.PageName);
  });
});

데이터를 문자열에서 JavaScript 개체로 변환했습니까?

다음과 같이 할 수 있습니다.data = eval('(' + string_data + ')');아니면, 어느쪽이 더 안전한지data = JSON.parse(string_data);그러나 나중에 기능하는 것은 FF 3.5 또는 json2.js를 포함하는 경우뿐입니다.

1.4.1 이후의 jQuery에는 그 기능도 있습니다.

근데 사실...$.getJSON()이미 해석된 json 오브젝트를 제공해야 하므로 모든 것을 꼼꼼히 체크해야 합니다.json에서 인용하는 것을 잊어버렸거나 괄호 중 하나가 누락되었을 수 있습니다.

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

getJSON은 올바른 콘텐츠 유형을 사용하는 한 JSON에 데이터를 평가합니다.서버가 데이터를 애플리케이션/json으로 반환하고 있는지 확인합니다.

언급URL : https://stackoverflow.com/questions/2342371/jquery-loop-on-json-data-using-each

반응형