JSONP 튜토리얼
JSONP Tutorial
이 장에서는 JSONP에 대한 지식을 소개합니다.
Jsonp(JSON with Padding)는 json의 "사용 모드"로, 이를 통해 웹 페이지는 다른 도메인 이름(웹 사이트)에서 데이터를 얻을 수 있습니다. 즉, 도메인 전체에서 데이터를 읽을 수 있습니다.
다른 도메인(웹사이트)의 데이터에 액세스하려면 왜 특수 기술(JSONP)이 필요한가요? 이는 동일한 출처 정책 때문입니다.
동일 출처 정책은 Netscape에서 제안한 잘 알려진 보안 정책입니다. 이제 JavaScript를 지원하는 모든 브라우저가 이 정책을 사용합니다.
JSONP 애플리케이션
1. 서버 측 JSONP 형식 데이터
고객이 액세스하려는 경우: //m.sbmmt.com/try/ajax/jsonp.php?jsonp=callbackFunction.
고객이 JSON 데이터(["customername1", "customername2"])가 반환되기를 기대한다고 가정합니다.
실제로 클라이언트에 반환된 데이터는 callbackFunction(["customername1","customername2"])로 표시됩니다.
서버측 파일 jsonp.php 코드는 다음과 같습니다.
<?php header('Content-type: application/json'); //获取回调函数名 $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']); //json数据 $json_data = '["customername1","customername2"]'; //输出jsonp格式的数据 echo $jsoncallback . "(" . $json_data . ")"; ?>
2 클라이언트는 callbackFunction 함수
<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>
페이지 표시
<div id="divCustomers"></div>
Complete를 구현합니다. 클라이언트 페이지 코드
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <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="//m.sbmmt.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script> </body> </html>
jQuery는 JSONP를 사용합니다
위 코드는 jQuery를 사용할 수 있습니다. 코드 예:
<!DOCTYPE html> <html> <head> <title>JSONP 实例</title> <script src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.js"></script> </head> <body> <div id="divCustomers"></div> <script> $.getJSON("//m.sbmmt.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>