jQuery JSONP
JSONP Tutorial
이 장에서는 JSONP에 대한 지식을 소개합니다.
Jsonp(JSON with Padding)는 json의 "사용 모드"로, 이를 통해 웹 페이지는 다른 도메인 이름(웹 사이트)에서 데이터를 얻을 수 있습니다. 즉, 도메인 전체에서 데이터를 읽을 수 있습니다.
다른 도메인(웹사이트)의 데이터에 액세스하려면 왜 특수 기술(JSONP)이 필요한가요? 이는 동일한 출처 정책 때문입니다.
동일 출처 정책은 Netscape에서 제안한 잘 알려진 보안 정책입니다. 이제 JavaScript를 지원하는 모든 브라우저가 이 정책을 사용합니다.
JSONP 애플리케이션
1. 서버 측 JSONP 형식 데이터
고객이 방문하려는 경우: http://www.runoob.com/try/ajax/ jsonp.php?jsonp=callbackFunction.
고객이 JSON 데이터(["customername1", "customername2"])가 반환되기를 기대한다고 가정합니다.
실제로 클라이언트에 반환된 데이터는 callbackFunction(["customername1","customername2"])로 표시됩니다.
서버 파일 jsonp.php 코드는 다음과 같습니다.
jsonp.php 파일 코드
Instance
<?php header('Content-type: application/json'); //获取回调函数名 $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']); //json数据 $json_data = '["customername1","customername2"]'; //输出jsonp格式的数据 echo $jsoncallback . "(" . $json_data . ")"; ?>
인스턴스 실행»
온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요
2. 고객은 마지막에 callbackFunction 기능을 구현합니다.
Instance
<script type="text/javascript"> function callbackFunction(result, methodName) { var html = '<ul>'; for(var i = 0; i < result.length; i++) { html += '<li>' + result[i] + '</li>'; } html += '</ul>'; document.getElementById('divCustomers').innerHTML = html; } </script>
Run Instance»
"Run Instance" 버튼을 클릭하면 온라인 인스턴스를 볼 수 있습니다
페이지 표시
클라이언트 페이지의 전체 코드
Example
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSONP 实例</title> </head> <body> <div id="divCustomers"></div> <script type="text/javascript"> function callbackFunction(result, methodName) { var html = '<ul>'; for(var i = 0; i < result.length; i++) { html += '<li>' + result[i] + '</li>'; } html += '</ul>'; document.getElementById('divCustomers').innerHTML = html; } </script> <script type="text/javascript" src="http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script> </body> </html>
인스턴스 실행»
"을 클릭하세요. 온라인 인스턴스를 보려면 Run Instance' 버튼을 누르세요
jQuery는 JSONP를 사용합니다
위 코드는 jQuery 코드 예제를 사용할 수 있습니다:
Examples
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSONP 实例</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script> </head> <body> <div id="divCustomers"></div> <script> $.getJSON("http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=?", function(data) { var html = '<ul>'; for(var i = 0; i < data.length; i++) { html += '<li>' + data[i] + '</li>'; } html += '</ul>'; $('#divCustomers').html(html); }); </script> </body> </html>
인스턴스 실행 »
온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요