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的更多相关文章

  1. JQuery Ajax jsonp

    JQuery ajax jsonp $.ajax({ method:"POST", url:"http://localhost:8081/ChenLei/PeopleSe ...

  2. jQuery 调用jsonp实现与原理

    jQuery 调用jsonp实现与原理 您的评价:        收藏该经验     阅读目录 1.客户端代码 2.服务器端 通过jQuery实现JSONP 一般的ajax是不能跨域请求的,因此需要使 ...

  3. jQuery的jsonp跨域是这么回事.

    实现跨域请求的有iframe,img,script中的src属性.那么jquery是如何解决跨域请求的呢? 一:项目jsonp2中有个app.js文件,代码如下: function app(json) ...

  4. jquery ajax jsonp跨域调用实例代码

    今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Lan ...

  5. 基于jQuery的Jsonp跨域[Get方式]

    由于目前的项目需要无刷新的跨域操作数据,整理了下自己使用的基于jQuery的Jsonp跨域[Get方式]. 代码如下: Javascript部分 $(function(){ $.ajax({ asyn ...

  6. jQuery中jsonp函数实现

    由于浏览器中的同源策略,不同的域名,不同的协议,甚至不同的端口都无法请求数据.因此出现了浏览器跨域请求数据问题. Jsonp是解决跨域问题的一个非常流行的方法. JSONP(JSON with Pad ...

  7. C# WebClient、jQuery ajax jsonp实现跨域

    WebClient 无传输数据获取 Uri uri = new Uri(allURL); WebClient wc = new WebClient(); wc.Encoding = System.Te ...

  8. 说说JSON和JSONP,也许你会豁然开朗,含jQuery使用jsonp用例

    [原创]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例  前言: 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了 ...

  9. jQuery使用JSONP时的错误处理

    概述 什么是域,简单来说就是协议+域名或地址+端口,3者只要有任何一个不同就表示不在同一个域.跨域,就是在一个域中访问另一个域的数据. 如果只是加载另一个域的内容,而不需要访问其中的数据的话,跨域是很 ...

随机推荐

  1. HTML5 filesystem: 网址

    FileSystem API 使用新的网址机制,(即 filesystem:),可用于填充 src 或 href 属性.例如,如果您要显示某幅图片且拥有相应的 fileEntry,您可以调用 toUR ...

  2. caffe 生成检测框并绘图

    Step 1 使用训练好的模型检测图片: build/examples/ssd/ssd_detect.bin models/VGGNet/VOC0712/SSD_300x300/deploy.prot ...

  3. 微服务中的 API 网关(API Gateway)

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...

  4. [转]mysql dual虚拟表

    From : http://thobian.info/?p=1035 虚拟表dual 其实我是今天第一次听说,虽然以前有过它的应用.说不定你也用过哦,看这条sql:select sysdate(); ...

  5. qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""

    转载:https://forum.qt.io/topic/97484/qt-5-12-make-mingw-32-release/12 I build Qt 5.12 with MinGW 7.3.0 ...

  6. 开源3D软件——大集合【转】

    要3D打印一件作品,自然少不了3D建模.以下是一些免费开源3D模型设计软件: Blender Blender是最受欢迎的免费开源3D模型制作软件套装. 跨平台支持所有的主要操作系统. 功能非常强大,但 ...

  7. 使用MDS Switch基本命令的一个例子

    笔者有幸摆弄一套vBlock的环境, 刚刚接手, 对其上的很多配置都不了解. 下面我们就例举一下我们通过运行哪些命令来搞清楚我们的UCS是如何连接到VNX storage array上的. 首先, 通 ...

  8. JQuery实现可编辑的表格

    点击表格后可直接编辑,回车或鼠标点击页面其他地方后编辑生效,按Esc可取消编辑 第一种单击表格可以编辑的方法 //相当于在页面中的 body标签加上onload事件$(function() {    ...

  9. Android -- isInEditMode

    解释 Indicates whether this View is currently in edit mode. A View is usually in edit mode when displa ...

  10. Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)

    http://blog.csdn.net/licongcong_0224/article/details/12972889 历时一周多,终于搭建好最新版本hadoop2.2集群,期间遇到各种问题,作为 ...