jquery Ajax 跨域调用(jsonp)
来源:互联网 发布:大妈投资域名300万被骗 编辑:程序博客网 时间:2024/05/18 08:40
最近一直在做电子商务方面的项目,包括买家和卖家后台 分别在seller.com 和buyer.com 还有前台www.xxx.com
其中有一个查看商品二级分类的下拉框 需要查询 当时没有考虑到这三个项目都会用到 就放到了前台的代码中,后台需求的变化,卖家和买家后台也要用到这个接口
由于初始化前台页面的时候是用ajax的方式初始化这个下拉框的,所以其他的平台的调用也想到了这个问题,紧接着就遇到ajax跨域的问题 ,下面来提供解决的方法。
下面是js代码
这样就可以跨域进行ajax请求了。
其中有一个查看商品二级分类的下拉框 需要查询 当时没有考虑到这三个项目都会用到 就放到了前台的代码中,后台需求的变化,卖家和买家后台也要用到这个接口
由于初始化前台页面的时候是用ajax的方式初始化这个下拉框的,所以其他的平台的调用也想到了这个问题,紧接着就遇到ajax跨域的问题 ,下面来提供解决的方法。
下面是action的代码 由三个系统共同调用
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();}}}
下面是js代码
$.ajax( { type : 'get',url : '<%=com.utils.PubConstant.wwwDomain %>/index/findSecondCat.action',data : {catType : 1},dataType : 'jsonp',//跨域必须用jsonperror : 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();}});
这样就可以跨域进行ajax请求了。
- jquery Ajax 跨域调用(jsonp)
- jquery Ajax 跨域调用(jsonp)
- 使用 jQuery 集成的 $.ajax 实现 JSONP 跨域调用
- ajax jsonp跨域调用
- jquery ajax or ajax Jsonp 调用
- JSONP解决跨域提交数据(jquery jsonp Ajax)
- JSONP解决跨域提交数据(jquery jsonp Ajax)
- Jquery+jsonp+ajax跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery,ajax,jsonp,struts实现跨域
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- jquery ajax jsonp 跨域实现
- jQuery ajax jsonp实现跨域请求
- JQuery+ajax+jsonp 跨域访问
- 面向对象的Shell脚本
- Android NDK 是什么
- C#中的反射 Assembly.Load() Assembly.LoadFrom()
- STM32 uCOS下实现串口文件
- 嵌入式硬件开发流程及工程师应具备的基本技能
- jquery Ajax 跨域调用(jsonp)
- hdu 3874 树状数组
- Boost学习系列3-函数对象(下)
- ARM与嵌入式linux的入门建议
- [vs 2005]_Iter_cat
- 关于windows句柄的含义
- 大学生在校期间应该完成的事情
- Android中Back键与Home键的区别
- 看内置对象的迷惑