时间: 2020-10-6|52次围观|0 条评论

JSONP 教程

本章节我们将向大家介绍 JSONP 的知识。

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

为什么我们从不同的域(网站)访问数据需要一个特殊的技术( JSONP )呢?这是因为同源策略。

同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略。

JSONP 应用

1. 服务端 JSONP 格式数据

如客户想访问 : https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction

假设客户期望返回数据:["customername1","customername2"]。

真正返回到客户端的数据显示为: callbackFunction(["customername1","customername2"])。

服务端文件 jsonp.php 代码为:

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
>

客户端页面完整代码

<
!
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
=
"
https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction
"
>
</
script
>

</
body
>

</
html
>

jQuery 使用 JSONP

以上代码可以使用 jQuery 代码实例:

<
!
DOCTYPE

html
>

<
html
>

<
head
>

<
meta

charset
=
"
utf-8
"
>

<
title
>
JSONP 实例
</
title
>

<
script

src
=
"
https://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js
"
>
</
script
>

</
head
>

<
body
>

<
div

id
=
"
divCustomers
"
>
</
div
>

<
script
>
$.
getJSON
(
"
https://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
>

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《JSONP 教程
   

还没有人抢沙发呢~