使用springMVC和Jquery实现JSONP
JSONP这个东东是啥我就不写了,直接贴实现的代码
JAVA代码:
/**
*
* 查询用户是否已经提交认证获取已经是认证会员
*
* 使用spring mvc的直接返回string会遇到分号转义后字符串不完整的问题
* @param userId
* @param callback
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
@RequestMapping("/queryAuthTaskStatus")
@ResponseBody
public void queryTaskStatus(@ModelAttribute(User.SESSION_USERID)String userId, String callback,PrintWriter out){
log.info("queryAuthTaskStatus:,user_id="+userId);
Map<String,String> ret = new HashMap<>();
String code = null;
String msg = null;
if(StringUtils.isEmpty(userId)){
code = "-1";
msg = "用户未登陆";
}else{
try {
UserVO user = userService.findInfoByUserId(Long.parseLong(userId));
if(xxx==yyy){
code = "1";
}else{
code = "0";
}
} catch (NumberFormatException | InParamException e) {
code = "-1";
msg = "查询用户信息异常";
log.error(e.getMessage(), e);
}
}
ret.put("code", code);
ret.put("msg", msg);
String result = callback + "(" + new Gson().toJson(ret) +")";
out.write(result);
out.flush();
out.close();
}
之前使用直接返回String出现字符被截取掉了(原因未知),后改成使用PrintWriter对象直接输出。
JS代码:
$.ajax({
async:false,
url: 'xxx/queryAuthTaskStatus.htm',
type: "get",
dataType: 'jsonp',
jsonp: 'callback',
success: function (data) {
console.log(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown){
}
});
Jquery文档描述:
jsonp String
在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。 jsonpCallback String
为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。
如果不用上门的JSONP代码调用,而是用普通调用,例如直接在浏览器敲:xxx/queryAuthTaskStatus.htm?userId=1&callback=callback,这个绿色是对应后台的参数名称,红色对应Jquery中的jsonp的值。
得到的结果:
callback({"code":"0"})
如果是jquery的jsonp请求代码将在console中看到:
{"code":"0"}
jsonp可以参考此blog:http://www.cnblogs.com/zichi/p/4593047.html
使用springMVC和Jquery实现JSONP的更多相关文章
- JQuery Ajax jsonp
JQuery ajax jsonp $.ajax({ method:"POST", url:"http://localhost:8081/ChenLei/PeopleSe ...
- jQuery 调用jsonp实现与原理
jQuery 调用jsonp实现与原理 您的评价: 收藏该经验 阅读目录 1.客户端代码 2.服务器端 通过jQuery实现JSONP 一般的ajax是不能跨域请求的,因此需要使 ...
- jQuery的jsonp跨域是这么回事.
实现跨域请求的有iframe,img,script中的src属性.那么jquery是如何解决跨域请求的呢? 一:项目jsonp2中有个app.js文件,代码如下: function app(json) ...
- jquery ajax jsonp跨域调用实例代码
今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Lan ...
- 基于jQuery的Jsonp跨域[Get方式]
由于目前的项目需要无刷新的跨域操作数据,整理了下自己使用的基于jQuery的Jsonp跨域[Get方式]. 代码如下: Javascript部分 $(function(){ $.ajax({ asyn ...
- jQuery中jsonp函数实现
由于浏览器中的同源策略,不同的域名,不同的协议,甚至不同的端口都无法请求数据.因此出现了浏览器跨域请求数据问题. Jsonp是解决跨域问题的一个非常流行的方法. JSONP(JSON with Pad ...
- C# WebClient、jQuery ajax jsonp实现跨域
WebClient 无传输数据获取 Uri uri = new Uri(allURL); WebClient wc = new WebClient(); wc.Encoding = System.Te ...
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery使用jsonp用例
[原创]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 前言: 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了 ...
- jQuery使用JSONP时的错误处理
概述 什么是域,简单来说就是协议+域名或地址+端口,3者只要有任何一个不同就表示不在同一个域.跨域,就是在一个域中访问另一个域的数据. 如果只是加载另一个域的内容,而不需要访问其中的数据的话,跨域是很 ...
随机推荐
- 14 道 JavaScript 题?
http://perfectionkills.com/javascript-quiz/ https://www.zhihu.com/question/34079683 著作权归作者所有.商业转载请联系 ...
- android R.layout 中找不到已存在的布局文件
在R.layout.test文件时,总是找不到您想要的文件,可是它明明就在layout文件下面,而且在R.Java中也已经生成了,那么找不到的原因就是你导入了Android.R的包,这样你永远找不到你 ...
- git如何上传所有的新文件 gitlab如何上传所有的新文件 git本地覆盖服务器 强制本地覆盖服务器
原文地址: https://blog.csdn.net/qq_28093585/article/details/78749153 目的描述:新建的git项目,项目中有许多要从本地上传到git仓库的新 ...
- ORM(Object-Relational Mapping 对象关系映射)如何实现(转)
原文链接:http://blog.163.com/hzd_love/blog/static/13199988120107891854473/ 1.什么是ORM ORM的全称是Object Relati ...
- Dubbo的一些编码约定和设计原则
编码约定 代码风格 Dubbo 的源代码和 JavaDoc 遵循以下的规范: Code Conventions for the Java Programming Language How to Wri ...
- 4个设计绝招教你减少PCB板电磁干扰
电子设备的电子信号和处理器的频率不断提升,电子系统已是一个包含多种元器件和许多分系统的复杂设备.高密和高速会令系统的辐射加重,而低压和高灵敏度 会使系统的抗扰度降低. 因此,电磁干扰(EMI)实在是威 ...
- 如何远程运行PowerShell命令?
首先, 被remote运行PowerShell的windows必须已经join了domain. 其次, 该Windows的PowerShell必须开启对remote command的接受, 运行下面的 ...
- Android教材 | 第三章 Android界面事件处理(二)—— 杰瑞教育原创教材试读
编者按 JRedu 杰瑞教育原创系列教材将于年后与大家正式见面.为更好的借鉴读者意见,我们将会陆续地在博客园推出一系列教材试读.我们也热忱的欢迎广大博友与我们互动,提出宝贵意见. 本篇博客将推出教材 ...
- pair练习
/* 编写程序读入一些列string和int型数据,将每一组存储在一个pair对象中, 然后将这些pair对象存储在vector容器里. */ #include <iostream> #i ...
- Medline Plus
提问地址: http://apps2.nlm.nih.gov/medlineplus/contact/index.cfm?lang=en&from=http://www.nlm.nih.gov ...