jQuery Ajax 跨域调用

最近一直在做电子商务方面的项目,包括买家和卖家后台 分别在linuxidc.com 和linuxidc.net 还有前台
其中有一个查看商品二级分类的下拉框 需要查询 当时没有考虑到这三个项目都会用到 就放到了前台的代码中,后台需求的变化,卖家和买家后台也要用到这个接口。

由于初始化前台页面的时候是用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代码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjwwd.html