JSONP

一、概念
1.JSONP:使用<script> 元素作为Ajax传输的技术。若HTTP请求所得到的响应数据是经过JSON编码的,则适合使用该技术。

2.<script> 元素作为Ajax传输机制:只须设置<script> 元素的src属性,然后浏览器就会发送一个HTTP请求以下载src属性所指向的URL。

3.使用<script> 元素进行Ajax传输的原因:

  • 它不受同源策略的影响,因此可以使用它们从其他的服务器请求数据。
  • 包含JSON编码数据的响应体会自动解码(自动执行)。

4.情况:假设你已经写了一个服务,它处理GET请求并返回JSON编码的数据。

  • 同源的文档可以在代码中使用XHR和JSON.parse()。
  • 假如在服务器上启用了可用的CORS,跨域的文档也可以使用XHR享受到该服务。
  • 在不支持CORS的情况下,跨域文档只能通过<script> 元素访问这个服务,即使用JSONP。

5.JSONP中的P含义:当通过<script> 元素调用数据时,响应内容必须用JS函数名和圆括号包裹起来。

//一段JSON数据
[1,2,{"buckle","my shoe"}]

//JSONP应当传送的数据
handleResponse(
	[1,2,{"buckle","my shoe"}]
)

二、JSONP的具体实现:
参考CSDN文章《简单透彻理解JSONP原理及使用》 中的例子。

“JSONP将访问跨域请求变成了执行远程JS代码,服务端不再返回JSON格式的数据,而是返回了一段将JSON数据作为传入参数的函数执行代码。”


三、jQuery提供了方便使用JSONP的方式

//js
$(document).ready(function(){
	$.ajax({
		type : "get",
        async: false,
        url : "http://www.example.com/example.php?id=1",
        dataType: "jsonp",
        jsonp:"callback", //请求php的参数名
        jsonpCallback: "jsonhandle",//要执行的回调函数
        success : function(data) {
            alert("age:" + data.age + "name:" + data.name);
        }
	});
});

//php
<?php
$data = array(
    'age' => 20,
    'name' => '张三',
);
$callback = $_GET['callback'];
echo $callback."(".json_encode($data).")";
return;

——阅读《Javascript权威指南》第18章
——参考文章 https://blog.csdn.net/u011897301/article/details/52679486

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值