jQuery Ajax 跨域调用
2011-08-04 00:00
1926 查看
最近一直在做电子商务方面的项目,包括买家和卖家后台 分别在linuxidc.com 和linuxidc.net 还有前台www.6688.cc
其中有一个查看商品二级分类的下拉框 需要查询 当时没有考虑到这三个项目都会用到 就放到了前台的代码中,后台需求的变化,卖家和买家后台也要用到这个接口。
由于初始化前台页面的时候是用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();
- }
- }
- }
- $.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();
- }
- });
相关文章推荐
- jquery ajax 调用webservice以及跨域问题
- 解决jquery ajax调用远程接口的跨域问题
- JQuery Ajax跨域调用和非跨域调用的问题
- jQuery ajax跨域调用出现No Transport
- Jquery Ajax 跨域调用asmx类型 WebService范例
- Jquery Ajax GetJson实现跨域调用
- jQuery Ajax 跨域下调用webservice返回jsonp格式数据实例
- jquery ajax 无法跨域调用的解决办法
- Jquery ajax 调用WebService 跨域访问的解决方法
- jQuery ajax跨域调用出现No Transport
- asp.net jquery ajax 跨域调用
- jquery Ajax跨域调用
- jquery ajax jsonp跨域调用实例代码
- jquery Ajax 跨域调用(jsonp)
- jquery ajax jsonp跨域调用实例代码
- jquery ajax跨域调用其他系统的URL
- jQuery ajax 跨域调用
- jquery ajax 跨域调用
- jquery Ajax跨域调用WebServices方法
- JQuery ajax调用webservice跨域问题解决办法