1、什么是JSONP

一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
JSONP是一种协议,为了解决客户端请求服务器跨域的问题,但是并非是正式的传输协议。该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了.
2、Ajax 请求其他域接口
我这个项目要请求另外一个第一个后台接口请求数据,在页面渲染的时候,通过ajax加载数据如下:
$.ajax({
url: 'http://www.xxx.cn/lalala?method=10082&page=1&pageSize=10',
type: 'GET',
dataType: 'json',
timeout: 5000,
contentType: 'application/json; charset=utf-8',
success: function (result) {
alter("aaaa");
}
});
这样就出现跨域的错误,如下所示:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 500.
这里就说明不允许跨域请求,那么怎么办? 换成jsonp好了。就改了dataType这个字段。
$.ajax({
url: 'http://www.xxx.cn/lalala?method=10082&page=1&pageSize=10',
type: 'GET',
dataType: 'jsonp',
timeout: 5000,
contentType: 'application/json; charset=utf-8',
success: function (result) {
alter("aaaa");
}
});
结果: Uncaught SyntaxError: Unexpected token!
what the fuck! 明明请求回来数据,结果还是报错。原因是ajax请求服务器,而返回的数据格式不符合jsonp的返回格式,那么jsonp格式是什么样的?
Callback({msg:'this is json data'})
这是什么叼东西,奇葩谁定义的!如果你这么想,看来你没有仔细看第1点,JSON是一种轻量级的数据交换格式,像xml一样。JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。但是上图是一段json串,所以报错啦。
3、参数返回处理
有一点你会发现在你是用jsonp协议请求时,在参数中除了自己填写的参数外还有名为callback的参数,如图:
看看这个参数是什么东西,因为我在ajax请求的时候没有指定,jsonp这个参数,那么系统默认参数名为“callback”。没有指定jsonpCallback参数, 那么jquery会生成随机的函数名,如上图所示。
比如我如下配置:
$.ajax({
url: 'http://www.xxx.cn/lalala?method=10082&page=1&pageSize=10',
type: 'GET',
dataType: 'jsonp',
jsonp:'callbacka',//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
timeout: 5000,
contentType: 'application/json; charset=utf-8',
success: function (result) {
alter("aaaa");
}
});
那么服务器亦可以通过下面方法获取回调的函数名:
复制代码 代码如下:
string callbackFunName =request.getParameter("callbacka");//获取的就是success_jsonpCallback 字符串
注意:系统会区分函数名大小写。
那么下面按照格式包装一下看看咯:
String callback = request.getParameter("callback"); //不指定函数名默认 callback
return callback+ "(" + jsonStr + ")"
包了一下,结果真的不报错,看下返回数据如下图:
4、JSONP的执行过程
首先在客户端注册一个callback (如:'jsoncallback'), 然后把callback的名字(如:jsonp1236827957501)传给服务器。注意:服务端得到callback的数值后,要用jsonp1236827957501(......)把将要输出的json内容包括起来,此时,服务器生成 json 数据才能被客户端正确接收。
然后,以 javascript 语法的方式,生成一个function, function 名字就是传递上来的参数 'jsoncallback'的值 jsonp1236827957501 .
最后,将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时javascript文档数据,作为参数, 传入到了客户端预先定义好的 callback 函数(如上例中jquery $.ajax()方法封装的的success: function (json))里。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# jsonp
# 跨域
# ajax
# jsonp跨域访问
# JAVA通过Filter实现允许服务跨域请求的方法
# Java实现CORS跨域请求的实现方法
# 详解java 中Spring jsonp 跨域请求的实例
# Java利用cors实现跨域请求实例
# 使用CORS实现JavaWeb跨域请求问题的方法
# 解决跨域请求
# NG返回403(403并不一定是NG问题)
# 客户端
# 是一种
# 报错
# 回调
# 服务端
# 文档
# 所示
# 自己的
# 默认为
# 是一个
# 如果你
# 我在
# 好了
# 你是
# 第一个
# 要用
# 自定义
# 不符合
# 如图
# 另外一个
相关文章:
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何在万网自助建站平台快速创建网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
网站制作免费,什么网站能看正片电影?
如何通过虚拟主机空间快速建站?
如何在IIS7上新建站点并设置安全权限?
如何在云主机上快速搭建多站点网站?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
建站主机CVM配置优化、SEO策略与性能提升指南
常州自助建站费用包含哪些项目?
股票网站制作软件,网上股票怎么开户?
红河网站制作公司,红河事业单位身份证如何上传?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
成都响应式网站开发,dw怎么把手机适应页面变成网页?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
网站制作话术技巧,网站推广做的好怎么话术?
如何选择域名并搭建高效网站?
C#如何使用XPathNavigator高效查询XML
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何安全更换建站之星模板并保留数据?
如何注册花生壳免费域名并搭建个人网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站之星安装路径如何正确选择及配置?
,南京靠谱的征婚网站?
建站与域名管理如何高效结合?
安云自助建站系统如何快速提升SEO排名?
专业商城网站制作公司有哪些,pi商城官网是哪个?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
宝塔Windows建站如何避免显示默认IIS页面?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
网站制作需要会哪些技术,建立一个网站要花费多少?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
建站主机与服务器功能差异如何区分?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何通过多用户协作模板快速搭建高效企业网站?
如何在建站之星网店版论坛获取技术支持?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何快速使用云服务器搭建个人网站?
广平建站公司哪家专业可靠?如何选择?
seo网站制作优化,网站SEO优化步骤有哪些?
如何挑选优质建站一级代理提升网站排名?
黑客入侵网站服务器的常见手法有哪些?
如何基于云服务器快速搭建网站及云盘系统?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
*请认真填写需求信息,我们会在24小时内与您取得联系。