문제가 해결된 후에도 그것이 의미하는 바를 대략적으로 이해했지만, 관련 json 객체를 얻는 것에 대한 jquery의 이해에는 여전히 편차가 있었습니다.
여기에서 고려되는 것은 서버가 JSON 문자열을 반환한다는 것입니다. JSONObject와 같은 플러그인으로 캡슐화된 JSON 객체의 경우에도 마찬가지이므로 여기서는 설명하지 않습니다.
여기서 먼저 JSON 문자열 세트가 제공됩니다.
코드는 다음과 같습니다.
var data="
{
root:
[
{name:'1',value:'0'} ,
{이름:'6101',값:'시안시'},
{이름:'6102',값:'퉁촨시'},
{이름:'6103',값 :'바오지시'},
{이름:'6104',값:'셴양시'},
{이름:'6105',값:'웨이난시'},
{이름:' 6106',value:'Yan'an City '},
{name:'6107',value:'Hanzhong City'},
{name:'6108',value:'Yulin City'},
{이름:'6109',값:'안강시'},
{이름:'6110',값:'상뤄시'}
]
}";
jquery를 사용하여 비동기적으로 얻은 데이터 json 객체와 문자열 유형을 기준으로 두 가지 방법으로 얻은 결과 처리 방법을 각각 소개합니다.
1. 서버에서 반환된 JSON 문자열의 경우 jquery 비동기 요청에 유형 설명이 없거나 문자열로 허용되는 경우 메서드가 너무 번거롭지 않아야 합니다. eval()에 문자열을 넣으면 한 번 실행됩니다. 이 방법은 일반적인 javascipt 방법으로 json 객체를 얻는데도 적합합니다. 다음은 예입니다:
var dataObj=eval("(" data ")");//json 객체로 변환
alert(dataObj.root.length);//개수를 출력합니다. 루트
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}
//출력 각 루트 하위 개체의 이름 및 값
alert("name:" item.name ",value:" item.value)
})
참고: 일반 js의 경우 json 객체를 생성하려면 $만 있으면 됩니다. Each() 메서드를 for 문으로 바꾸고 나머지는 변경하지 않고 그대로 두세요.
2. 서버에서 반환된 JSON 문자열의 경우 jquery 비동기 요청이 유형(일반적으로 이 구성 속성)을 "json"으로 설정하거나 $.getJSON() 메서드를 사용하여 서버 반환을 얻는 경우 이때 얻은 결과는 이미 json 개체이므로 eval() 메서드가 필요하지 않으며 개체를 직접 호출하기만 하면 됩니다. 여기서는 데이터 처리 방법을 설명하기 위해 $.getJSON 메서드를 예로 사용합니다.
여기서 특별한 주의가 필요한 것은 방법 1에서 eval() 메서드가 문자열(아마도 js 스크립트)을 동적으로 실행하므로 시스템 보안 문제가 쉽게 발생할 수 있다는 것입니다. 따라서 eval()을 우회하는 일부 타사 클라이언트 스크립트 라이브러리를 사용할 수 있습니다. 예를 들어
JavaScript의 JSON은 3k 이하의 스크립트 라이브러리를 제공합니다.