SpringMVC处理JSONP请求

  • 前端JS写法

    doAjax({  
        url:getTaskPath(selected)+"refreshJob.do",
        dataType:'jsonp',  
        data:selected,  
        jsonp:'callback',  //关键
        jsonpCallback:"success_jsonpCallback", //这是关键
        success:function(data) {  
            if(!isEmpty(data)){
                doQuery();
                $.messager.alert( '提示', '刷新定时任务成功!' , 'info');
            }else{
                $.messager.alert( '提示', '刷新定时任务失败!' , 'info');
            } 
        }
    }); 
  • 后台Controller层写法

方法上要这样标识格式和编码,否则会有乱码 其中 CHARSET=";charset=UTF-8"

    @RequestMapping(value="/refreshJob", produces = MediaType.APPLICATION_JSON_VALUE + CHARSET)
    @ResponseBody
    public String refreshJob(TaskJob taskJob){

返回结果格式如下:

String callback = currentRequest.get().getParameter("callback");
return callback+"("+GsonUtil.toJson(GsonUtil.toJson(taskJobNew))+")";

请求的结果截图如下:


image.png

在前端解析结果如下:


SpringMVC处理JSONP请求_第1张图片
image.png
注意:虽然返回请求的字符串里面看是success_jsonpCallback("{xxxJSON串xxx}"),但是在在解析data的时候,得到的是一个可以直接调的变量实体,无需关注 success_jsonpCallback 怎么解析.

你可能感兴趣的:(SpringMVC处理JSONP请求)