> 웹 프론트엔드 > JS 튜토리얼 > JSONP란 무엇인가, JSON과 JSONP의 연관성과 차이점에 대한 자세한 설명

JSONP란 무엇인가, JSON과 JSONP의 연관성과 차이점에 대한 자세한 설명

伊谢尔伦
풀어 주다: 2016-11-22 13:16:03
원래의
1144명이 탐색했습니다.

AJAX에 관해서라면 필연적으로 두 가지 질문에 직면하게 됩니다.

첫 번째는 AJAX가 데이터를 교환하는 데 어떤 형식을 사용하는가입니다.

두 번째는 크로스 도메인 요구 사항을 해결하는 방법입니다.

현재 이 두 가지 문제에 대한 다양한 솔루션이 있습니다. 예를 들어 데이터는 사용자 정의 문자열이나 XML로 설명할 수 있고, 크로스 도메인은 서버측 프록시를 통해 해결할 수 있습니다.

그러나 지금까지 가장 권장되거나 선호되는 솔루션은 JSON을 사용하여 데이터를 전송하고 도메인 간에는 JSONP를 사용하는 것입니다. 이것이 바로 이 기사의 내용입니다.

JSON이란 무엇인가요?

앞서 간략히 언급했듯이 JSON은 텍스트 기반의 데이터 교환 방식인지, 데이터 설명 형식인지를 먼저 살펴봐야 합니다.

JSON의 장점:

일반 텍스트를 기반으로 크로스 플랫폼 전송이 매우 간단합니다.

Javascript가 기본적으로 지원되며 거의 모든 배경 언어가 지원됩니다.

가벼운 수준의 데이터 형식으로 문자 수가 매우 적으며 특히 인터넷 전송에 적합합니다.

은 XML만큼 명확하지는 않지만 가독성이 높지만 여전히 식별하기 쉽습니다. 합리적인 들여쓰기 후; 물론 데이터 구조를 안다면 작성하고 구문 분석하기 쉽습니다.

JSON에는 확실히 단점이 있지만 저자의 의견으로는 실제로는 관련이 없습니다. 따로 설명하지 않습니다.

JSON 형식 또는 규칙:

JSON은 매우 간단한 방식으로 데이터 구조를 설명할 수 있으므로 XML이 할 수 있는 모든 작업을 수행할 수 있으므로 교차 측면에서 둘 사이에는 차이가 없습니다. 플랫폼은 동등합니다.

JSON에는 두 개의 데이터 유형 설명자(중괄호 {} 및 대괄호 [])만 있습니다. 나머지 영어 콜론은 매핑 문자이고, 영어 쉼표는 구분 기호이며, 영어 큰따옴표 ""는 문자 정의입니다.

중괄호 {}는 "다양한 유형의 순서가 지정되지 않은 키-값 쌍 세트"(각 키-값 쌍은 OOP 속성 설명으로 이해될 수 있음) 집합을 설명하는 데 사용되며 대괄호 [ ]는 "동일한 유형의 정렬된 데이터 컬렉션"(OOP 배열에 해당할 수 있음) 집합을 설명하는 데 사용됩니다.

위 두 세트에 하위 항목이 여러 개 있을 경우 쉼표로 구분해야 합니다.

키-값 쌍은 영어 콜론:으로 구분되며, 다른 언어의 구문 분석을 용이하게 하기 위해 키 이름에 영어 큰따옴표 ""를 추가하는 것이 좋습니다.

JSON에서 일반적으로 사용되는 데이터 유형은 문자열, 숫자, 부울, 날짜 및 null뿐입니다. 문자열은 큰따옴표로 묶어야 하며 나머지는 특수하게 사용되지 않습니다. 여기서는 확장하지 마세요. 클라이언트에 날짜별 정렬 기능이 필요하지 않은 경우 날짜와 시간을 문자열로 직접 전달하면 많은 문제를 줄일 수 있습니다.

JSON 예제

JSON에 대한 내용은 여기까지입니다. 자세한 내용은 개발 과정에서 심층적으로 학습할 내용을 참고하시기 바랍니다.

JSONP란 무엇인가요?
// 描述一个人
var person = {
    "Name": "Bob",
    "Age": 32,
    "Company": "IBM",
    "Engineer": true
}
// 获取这个人的信息
var personAge = person.Age;
// 描述几个人
var members = [
    {
        "Name": "Bob",
        "Age": 32,
        "Company": "IBM",
        "Engineer": true
    },
    {
        "Name": "John",
        "Age": 20,
        "Company": "Oracle",
        "Engineer": false
    },
    {
        "Name": "Henry",
        "Age": 45,
        "Company": "Microsoft",
        "Engineer": false
    }
]
// 读取其中John的公司名称
var johnsCompany = members[1].Company;
// 描述一次会议
var conference = {
    "Conference": "Future Marketing",
    "Date": "2012-6-1",
    "Address": "Beijing",
    "Members": 
    [
        {
            "Name": "Bob",
            "Age": 32,
            "Company": "IBM",
            "Engineer": true
        },
        {
            "Name": "John",
            "Age": 20,
            "Company": "Oracle",
            "Engineer": false
        },
        {
            "Name": "Henry",
            "Age": 45,
            "Company": "Microsoft",
            "Engineer": false
        }
    ]
}
// 读取参会者Henry是否工程师
var henryIsAnEngineer = conference.Members[2].Engineer;
로그인 후 복사

먼저 JSONP가 어떻게 탄생하게 되었는지부터 말씀드리겠습니다.

실제로 인터넷에 JSONP에 대한 설명이 많이 있지만 모두 똑같고 헷갈려서 많은 분들이 어려워하시는 내용입니다. 처음 접하는 사람은 이해하기 어렵겠지만 사소한 문제입니다. 자신만의 방식으로 문제를 설명하고 도움이 되는지 확인하세요.

잘 알려진 문제는 일반 파일에 대한 직접 Ajax 요청에는 정적 페이지, 동적 웹 페이지, 웹 서비스 또는 WCF인지 여부에 관계없이 도메인 간 무단 액세스 문제가 있다는 것입니다. 크로스 도메인 요청이므로 허용되지 않습니다.

그러나 웹 페이지에서 js 파일을 호출할 때 크로스 도메인인지 여부에 영향을 받지 않는 것으로 나타났습니다. , 우리는 또한 "src" 속성이 있는 모든 태그가

인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿