CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
这篇CFSDN的博客文章PHP下ajax跨域的解决方案之jsonp实例分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了PHP下ajax跨域的解决方案之jsonp。分享给大家供大家参考,具体如下:
首先要说明一下json和jsonp的区别?
json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式.
?
1
2
3
4
5
6
7
|
của chúng tôi
person = {
"tên"
:
"Bài kiểm tra"
,
"tuổi"
:
"25"
,
"tình dục"
:
"nam giới"
};
của chúng tôi
data = [1, 2, 3, 4, 5];
|
而jsonp是一种非官方跨域数据交互协议,该协议允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住json数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了.
比如我在a.com的网站上引用了b.com的一个b.js,但这样跨域的引用并不会产生错误,说明调用js文件时不受跨域的影响.
?
1
|
"văn bản/javascript"
src=
"http://www.b.com/b.js"
>
|
那么我们在b.js里添加如下代码,看看是否能够执行 。
确定是可以执行.
那么如果我们在a.com上自已创建一个js函数,而在b.com下的b.js中调用,那是否可行呢?
a.com下的index.html如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<đầu>đầu>
"UTF-8"
>
|
"văn bản/javascript"
>
chức năng
a(data) {
báo động(
"I from a \r\n"
+
"data:"
+ data);
}
"văn bản/javascript"
src=
"http://www.b.com/b.js"
>
|
b.com下的b.js如下:
上面也是可以执行的,我们可以看到在b.js中的数据确实正确的传到了函数a中.
问题又来了,a.com中创建的函数名与b.js中调用的函数名必须一致,那么如何才能让b.com服务端知道这个函数名,只有通过地址栏来传递了,加上一个callback=函数名来传递。当然callback这个命名可以改,但大家都这么命名,也就约定俗成了.
a.com下的index.html如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<đầu>đầu>
"UTF-8"
>
|
"văn bản/javascript"
>
chức năng
a(data) {
báo động(
"uid :"
+ data.uid +
"name :"
+ data.name);
}
"văn bản/javascript"
src=
"http://www.b.com/b.php?callback=a"
>
|
b.com下的b.php如下:
?
1
2
3
4
5
6
7
8
9
10
11
|
$gọi lại
= !
trống
(
$_NHẬN
[
'callback'
]) ? cắt(
$_NHẬN
[
'callback'
]):
''
;
nếu như
(!
trống
(
$gọi lại
)) {
$dữ liệu
= mã hóa json(
mảng
(
'chất lỏng'
=> 1,
'tên'
=>
'测试'
,
));
tiếng vọng
"{$callback}({$data});"
;
}
|
上面也是可以执行的,知道了回调函数名,b.com服务端处理好数据,然后通过字符串拼接输出.
jquery中就已经提供了jsonp的支持,a.com下的index.html如下所示:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<đầu>đầu>
"UTF-8"
>
|
"thông tin"
>
"văn bản/javascript"
src=
"http://www.b.com/jquery.js"
>
"văn bản/javascript"
>
$.ajax({
Kiểu dữ liệu:
"jsonp"
,
địa chỉ:
"http://www.b.com/b.php"
,
jsonp:
"callback"
,
thành công:
chức năng
(data) {
(
".info"
).text(
"uid:"
+ data.uid +
" name:"
+ data.name);
}
});
|
Tôi hy vọng bài viết này sẽ hữu ích cho mọi người trong việc lập trình PHP.
最后此篇关于PHP下ajax跨域的解决方案之jsonp实例分析的文章就讲到这里了,如果你想了解更多关于PHP下ajax跨域的解决方案之jsonp实例分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Tôi là một lập trình viên xuất sắc, rất giỏi!