ajax 跨域访问

xiaoxiao2021-02-28  87

之前一直只知道有跨域这一说,但并没有在项目中实战过。就在昨日有一个小需求就需要用到跨域。因此将实战的结果记录下。

跨域原理:ajax不能请求非当前服务之外的服务。

具体步骤

1:引入jquery

2:前端请求代码

$.ajax({ type:"POST", dataType:"jsonp", cache:false, jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 data:{"keyword":keyword,"entry":20}, url:"http://21.179.197.101:84/tyjs/searchFirst2.do", success:function(resultData){ alert(resultData); } });

3:后端接收代码 说明   1:参数callbackparam就是前端定义的参数名,这是约定的参数名哦   2:然后通过参数名callbackparam获取到的值就是 前端定义的 jsonpCallback值   3:后端响应数据格式: 参数名callbackparam的值(要响应的数据格式,也就是前端要接收的数据格式)   4:后端响应格式就要设置为text/plain非json了哦。前端可以写json,会自动转换

@ResponseBody @RequestMapping("/searchFirst2") public void searchFirst2(String callbackparam, SearchView sv, Paging<Info> paging, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/plain;charset=utf-8"); String keyword = sensitiveWordUtlis.filterInfo2(sv.getKeyword()); sv.setKeyword(keyword); if (StringUtils.isNotEmpty(keyword)) { searchService.count(sv.getKeyword()); try { searchService.searchFirst(paging, sv); } catch (Exception e) { logger.error(e); } } String jsonData = JsonMyUtil.object2json(paging); jsonData = String.format("%s(%s)", callbackparam, jsonData); resp.getWriter().print(jsonData); resp.flushBuffer(); }

参考前辈的经验(里边有介绍到原理)

http://www.cnblogs.com/know/archive/2011/10/09/2204005.html

转载请注明原文地址: https://www.6miu.com/read-68903.html

最新回复(0)