JSONP 튜토리얼LOGIN

JSONP 튜토리얼

JSONP Tutorial

이 장에서는 JSONP에 대한 지식을 소개합니다.

Jsonp(JSON with Padding)는 json의 "사용 모드"로, 이를 통해 웹 페이지는 다른 도메인 이름(웹 사이트)에서 데이터를 얻을 수 있습니다. 즉, 도메인 전체에서 데이터를 읽을 수 있습니다.

다른 도메인(웹사이트)의 데이터에 액세스하려면 왜 특수 기술(JSONP)이 필요한가요? 이는 동일한 출처 정책 때문입니다.

동일 출처 정책은 Netscape에서 제안한 잘 알려진 보안 정책입니다. 이제 JavaScript를 지원하는 모든 브라우저가 이 정책을 사용합니다.

JSONP 애플리케이션

1. 서버 측 JSONP 형식 데이터

고객이 액세스하려는 경우: http://www.php.cn/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="http://www.php.cn/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("http://www.php.cn/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>


<!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("http://www.php.cn/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>
코스웨어