jsonp解决跨域请求问题
2017-11-29 08:32
519 查看
关键代码
struts中的配置
/** * jsonp解决跨域请求问题。 * JSONP,该协议允许用户传递一个callback参数给服务端,服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据, * 这样客户端就可以随意定制自己的函数来自动处理返回数据了 */ public String queryStaffInfo() { list = staffInfoInterfaceService.queryStaffInfo();// 查询人员信息 /* * object = new JSONPObject("data", * JSONArray.fromObject(staffInfoInterfaceService * .queryAllStaffInfoWx())); */ JSONArray rows = JSONArray.fromObject(list);// list转换为jsonArray JSONObject jsonObject = new JSONObject(); try { jsonObject.put("result", rows);// 把rows放入到jsonobject中 key为result } catch (JSONException e1) { e1.printStackTrace(); } HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse resp = ServletActionContext.getResponse(); String callback = req.getParameter("callback"); String returnResult = "";// 返回结果 if (callback != null && !"".equals(callback)) {//如果请求地址后面的callback不为空 returnResult = callback + "(" + jsonObject.toString() + ")";//返回结果callback+返回的json数据 } else { try { returnResult = jsonObject.getString("result");//返回结果直接返回json } catch (JSONException e) { e.printStackTrace(); } } resp.setCharacterEncoding("utf-8"); resp.setContentType("text/javascript"); try { PrintWriter out = resp.getWriter(); out.write(returnResult);//返回数据 } catch (IOException e) { e.printStackTrace(); } return null; }
struts中的配置
<action name="queryStaffInfo" class="staffInfoTxlInterfaceAction" method="queryStaffInfo"> <result name="success" type="json"> <param name="callbackParamter">callback</param> </result> </action>
相关文章推荐
- 通过jsonp解决ajax的跨域请求问题
- jsonp解决跨域请求问题
- jsonp解决跨域请求问题
- ajax请求跨域问题-通过jsonp方式解决
- ajax请求解决跨域问题 摒弃jsonp方式
- 快速解决跨域请求问题:jsonp和CORS
- 前端接收 get 请求,用jsonp 解决跨域问题, 需要服务端的response 也要jsonp 类型
- 通过jsonp解决ajax的跨域请求问题
- ajax请求中遇到的跨域问题的解决办法(jsonp)
- 跨域请求问题以及相关解决方法之JSONP
- 使用fetch轻松解决JS跨域请求问题——无需CORS,jsonp
- JSONP解决js跨域请求的问题
- JSONP解决跨域请求问题
- JSONP跨域GET请求解决Ajax跨域访问问题
- jsonp实现浏览器跨域请求 解决同源策略问题
- 使用jsonp解决ajax请求json跨域问题
- 请求跨域问题 解决办法之 - jsonp
- 通过jsonp解决ajax的跨域请求问题
- 通过jsonp解决ajax的跨域请求问题