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" 버튼을 클릭하면 온라인 인스턴스를 볼 수 있습니다

페이지 표시

Instance

<div id="divCustomers"></div>

인스턴스 실행»

온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요.

클라이언트 페이지의 전체 코드

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>

인스턴스 실행 »

온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요