使用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);
    }

之前使用直接返回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

时间: 2024-08-08 05:24:09

使用springMVC和Jquery实现JSONP的相关文章

利用jQuery获取jsonp

前端js代码: $.ajax({ url: 'http://localhost:8080/webApp/somejsonp', dataType: "jsonp", jsonp: "callback", success: function (data) { console.log(data) } }) 服务端代码: 本例采用java实现  使用的springmvc伪代码 private boolean ifJsonp(HttpServletRequest reque

JQuery+ajax+jsonp 跨域访问

Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料. 关于Jsonp更详细的资料请参考http://baike.baidu.com/view/2131174.htm,下面给出例子: 一.客户端 Html代码   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.

jQuery ajax jsonp 使用模型

jQuery对ajax的支持 $.ajax({ //json形式数据 url: "DemoServlet", method: "post", data:{ //此处表示向服务器端传递的参数 msg: "msg的数据" did: "did的数据" }, dataType: "text", //"xml" "json" //服务器端处理后的响应方式 success: fu

jquery ajax jsonp跨域调用实例代码

今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.WebForm1" %><!DOCTYPE html P

jQuery的jsonp跨域是这么回事.

实现跨域请求的有iframe,img,script中的src属性.那么jquery是如何解决跨域请求的呢? 一:项目jsonp2中有个app.js文件,代码如下: function app(json){ alert(json['name']); } 项目jsonp1中的index.html <script type="text/javascript" src="http://127.0.0.1:8020/jsonp2/js/app.js"></sc

jQuery处理JSONP

http://www.g7blogs.com/?p=821 作为一枚前端,提起jsonp大家都不会陌生.特别是在我们组内的业务中,和服务器端交互的数据几乎都是采用这种形式.但假如要让你用原生的JS写出XHR请求来构造JSONP,估计都要跪了吧.因为我们都习惯把jQuery当成了JS的一部分了,就好比平时都是坐飞机到帝都的,你突然说让我骑个单车上北京.不是说不行,只是平时骄奢惯了,适应不了原生态.所以这篇东西要说的并不是那些Google随便一搜就可以搜到的JSONP科普文,而重点要说的是jQuer

springmvc 整合jquery uploadify 火狐浏览器不兼容问题解决

IE8下测试通过,测试告诉我在火狐浏览器中出现问题,打断点发现问题 1.不进入springmvc 解决办法是:;jsessionid=<%=sessionId%> <% String sessionId = request.getSession().getId();%> //上传处理程序url 'uploader' : '${path}/bpmAttachController/fileUpload.do;jsessionid=<%=sessionId%> 2.进入spr

jquery结合JSONP教程—明河谈jquery

http://www.36ria.com/1714 \1.什么是jsonp? Ajax技术现在非常的盛行,但javascript的跨域问题一直是个问题,而jsonp的出现算是比较好的解决方案. 关于jsonp最详细的介绍请看:http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/ jsonp的基础知识上面这个页面已经非常详细了,不再重复.接下来重要演示jquery下jsonp的使用. 2.jquery与jsonp jquery已经可以完美的使

jQuery 使用 JSONP

<script type="text/javascript"> function callbackFunction(result, methodName) { var html = '<ul>'; for(var i = 0; i < result.length; i++) { html += '<li>' + result[i] + '</li>'; } html += '</ul>'; document.getEle