각각 $.를 사용하여 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
'programing' 카테고리의 다른 글
| MongoCredential 인증 예외 및 분류되지 않은 Mongo DB 예외 (0) | 2023.03.08 |
|---|---|
| 로드 밸런서에 클라이언트에 사용 가능한 서버가 없습니다. (0) | 2023.03.08 |
| 왜 반대하지 않는 거죠?키는 TypeScript에서 키 타입을 반환합니까? (0) | 2023.03.08 |
| Larabel에서 최대 파일 크기를 검증하는 방법 (0) | 2023.03.03 |
| BeCalledWith()를 기대하는 개체를 전달하는 중 (0) | 2023.03.03 |