JQuery跨域调用Rest服务接口
来源:互联网 发布:雅思听力怎么提高 知乎 编辑:程序博客网 时间:2024/04/30 18:10
项目需要在前台页面中,通过JQuery跨域调用Rest服务接口。
后台代码:
public class HeadAction extends BaseAction{ private HttpServletRequest request; private HttpServletResponse response; public void findSecondCat(){ ActionContext ctx = ActionContext.getContext(); request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST); response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE); //response.setHeader("Cache-Control", "no-cache"); response.setContentType("text/json;charset=utf-8"); String catType = request.getParameter("catType"); List<CategoryNode> node = CategoryCache.getAllCategoryNodes(1, Integer.parseInt(catType));//调用缓存查询分类 try { PrintWriter out = response.getWriter(); JSONArray ja = new JSONArray(); for(CategoryNode c: node){//返回json格式 JSONObject j = new JSONObject(); j.put("id", c.ID); j.put("name", c.Name); ja.add(j); } String cb = request.getParameter("callback");//若果是ajax请求会带这个参数 你可以firfox的firbug跟踪一下就看到了 if(cb != null){//如果是跨域 StringBuffer sb = new StringBuffer(cb); sb.append("("); sb.append(ja.toString()); sb.append(")"); out.write(sb.toString()); out.close(); }else{//不跨域的情况 out.write(ja.toString()); out.close(); } } catch (IOException e) { e.printStackTrace(); } } }
JQuery调用代码:
$.ajax( { type : 'get', url : '<%=com.utils.PubConstant.wwwDomain %>/index/findSecondCat.action', data : { catType : 1 }, dataType : 'jsonp',//跨域必须用jsonp error : function() { }, success : function(data) { innerOption = "<option value=''>全部分类</option>"; for(var i=0;i<data.length;i++){ innerOption += '<option value="'+data[i].id+'">'+data[i].name+'</option>'; }; $('#secondCatIdId').html(innerOption); $("#lang, #secondCatIdId").jListbox(); } });
总结下JSONP原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)
- JQuery跨域调用Rest服务接口
- JQuery调用Rest服务接口
- JQUERY 跨域调用WCF REST服务
- JAVA调用Rest服务接口
- Jersey+Spring 实现rest 接口 服务调用
- Jersey+Spring 实现rest 接口 服务调用
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- jquery jsonp跨域调用接口
- JEESZ REST服务接口文档
- Jersey 发布rest服务接口
- rest 调用有参数接口
- js ajax调用rest接口
- Rest接口调用工具使用
- ArcGIS Engine 调用Rest服务
- ASP.NET交互Rest服务接口(Jquery的Get与Post方式)
- ASP.NET交互Rest服务接口(Jquery的Get与Post方式)
- HugeBoss开发规范
- Ext Js注意的问题 解决combox 老是Loading的问题
- win32实现判断指定进程中是否存在(code)
- 在android App中怎样实现对设备重启或者关机功能
- android腾讯微博吹一吹实现原理
- JQuery跨域调用Rest服务接口
- 设计模式-代理模式
- 给UIImageview 添加边框 或者设置成圆角
- mysql操作语句
- Ubuntu使用小结& DEBUG
- Hibernate方言配置
- 网络编程-Winsock
- @GeneratedValue
- 转载的一篇文章【每日生活】30岁前我们都应该学会的10堂人生课(双语)