浏览器跨域问题 jsonp

编程技术  /  houtizong 发布于 3年前   115

惯例:

我是温浩然:

诚实一点,学得别人的,就是转载的。

网址:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

只有浏览器有跨域的问题,所以说,这篇文章是为了解决浏览器的跨域问题。

跨域传输数据用jsonp格式。至于想知道什么是jsonp,看上面的网址去。大神写的。

根据文章的介绍,我这种属于jquery实现jsonp。

浏览器中代码如下:

var map={name:$('#editCardModal .name').val(),description:$('#editCardModal .description').val(),expire:$('#editCardModal .expire').val()}$.ajax({ type : 'GET',              contentType:'application/jsonp',      url:"http://xxxxxxxx/editCard",             dataType:'jsonp',      data:map,      async: false,    jsonp:'callback',      success:function(result) {      window.location.reload();    },      error:function(){          alert('系统出错,请与管理员联系');      }  }); 

map,是我打包好的数据,通过这种方式,就把这段数据传递到http://xxxxxxx中了。

在服务器中是怎样解析的呢?

代码如下:

/** * 获得活动列表接口 * @param request 请求路径格式     * ...sms-server/activity/getActLiInf?callback=?&accessKeyId=?&accessKeySecret=?&page=?&size=?&status=? * @param callback    JSONP回掉函数 * @param accessKeyId,密钥Id * @param accessKeySecret,密钥密码 * @param page,当前页数,默认为1 * @param size,每页条数,默认为20 * @param status,活动状态,0--未开始,1--进行中,2--已结束      默认为全部 *  */@ResponseBody@RequestMapping(value="/getActLiInf",method=RequestMethod.GET)public JSONPObject getActListInterface(HttpServletRequest request,@RequestParam String callback,@RequestParam String accessKeyId,@RequestParam String accessKeySecret,@RequestParam int status,@RequestParam int page,@RequestParam int size) { ResultCode resultCode=ResultCode.SUCCEED;Map<String,Object> mapResponse = new HashMap<String,Object>();Object result = null;try {ParamChecker.notEmpty("accessKeyId", accessKeyId);ParamChecker.notEmpty("accessKeySecret", accessKeySecret);Company company=companyService.getCompanyByAccessKeyId(accessKeyId);if(!company.getAccessKeySecret().equals(accessKeySecret)){resultCode = ResultCode.INTERNAL_ERROR;result+="鉴权失败";throw new UnAuthedException("鉴权失败");}List<String> enIPList = ipBlackListService.getEnIPList();String ip = request.getRemoteAddr();if(!enIPList.contains(ip)){resultCode = ResultCode.INTERNAL_ERROR;    result+="ip拒绝访问";throw new UnAuthedException("拒绝访问");}if(String.valueOf(page)==null||page<=0){page=1;}if(String.valueOf(size)!=null&&size<=0){size=20;}if(String.valueOf(status)!=null&&status<=-1&&status>2){status=-1;}PageInfo<PageActivity> pageInfo =pageActService.getPageActListByCondition(company.getId(),status,page,size); List<Company> companys=companyService.getCompany();Map<String,Object> mapAct = new HashMap<String,Object>();mapAct.put("pageInfo", pageInfo);mapAct.put("companys", companys);result=mapAct;} catch (VerifyException e) {resultCode = ResultCode.INTERNAL_ERROR;result = e.getMessage();}mapResponse.put("resultCode", resultCode);mapResponse.put("result", result);return new JSONPObject(callback,mapResponse) ;  }

我这里是通过spring注解获取数据的,很简单,就这么用,这样,在浏览器中就可以跨域请求数据了。


下一篇:logback.xml

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客