`
llyzq
  • 浏览: 585427 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jquery Ajax 跨域调用(jsonp)

    博客分类:
  • J2EE
 
阅读更多

最近一直在做电子商务方面的项目,包括买家和卖家后台 分别在seller.com 和buyer.com 还有前台www.xxx.com
其中有一个查看商品二级分类的下拉框 需要查询 当时没有考虑到这三个项目都会用到 就放到了前台的代码中,后台需求的变化,卖家和买家后台也要用到这个接口
由于初始化前台页面的时候是用ajax的方式初始化这个下拉框的,所以其他的平台的调用也想到了这个问题,紧接着就遇到ajax跨域的问题 ,下面来提供解决的方法。

下面是action的代码 由三个系统共同调用

 

  1. public class HeadAction extends BaseAction{  
  2.   
  3.     private HttpServletRequest request;  
  4.     private HttpServletResponse response;  
  5.     public void findSecondCat(){  
  6.         ActionContext ctx = ActionContext.getContext();  
  7.         request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);  
  8.         response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);   
  9.         //response.setHeader("Cache-Control", "no-cache");  
  10.         response.setContentType("text/json;charset=utf-8");  
  11.         String catType = request.getParameter("catType");  
  12.         List<CategoryNode> node = CategoryCache.getAllCategoryNodes(1, Integer.parseInt(catType));//调用缓存查询分类  
  13.         try {  
  14.             PrintWriter  out = response.getWriter();  
  15.             JSONArray ja = new JSONArray();  
  16.             for(CategoryNode c: node){//返回json格式  
  17.                 JSONObject j = new JSONObject();  
  18.                 j.put("id", c.ID);  
  19.                 j.put("name", c.Name);  
  20.                 ja.add(j);  
  21.             }  
  22.               
  23.               String cb = request.getParameter("callback");//若果是ajax请求会带这个参数 你可以firfox的firbug跟踪一下就看到了    
  24.               if(cb != null){//如果是跨域  
  25.                   StringBuffer sb = new StringBuffer(cb);  
  26.                   sb.append("(");  
  27.                   sb.append(ja.toString());  
  28.                   sb.append(")");  
  29.                   out.write(sb.toString());  
  30.                     out.close();  
  31.               }else{//不跨域的情况  
  32.                   out.write(ja.toString());  
  33.                     out.close();  
  34.               }  
  35.         } catch (IOException e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.           
  39.     }  
  40. }  

下面是js代码

 

 

[javascript] view plaincopyprint?
  1. $.ajax( {  
  2.                 type : 'get',  
  3.                 url : '<%=com.utils.PubConstant.wwwDomain %>/index/findSecondCat.action',  
  4.                 data : {  
  5.                     catType : 1  
  6.                 },  
  7.                 dataType : 'jsonp',//跨域必须用jsonp  
  8.                 error : function() {  
  9.                 },  
  10.                 success : function(data) {  
  11.                             innerOption = "<option value=''>全部分类</option>";  
  12.                             for(var i=0;i<data.length;i++){  
  13.                                  innerOption += '<option value="'+data[i].id+'">'+data[i].name+'</option>';  
  14.                              };  
  15.                             $('#secondCatIdId').html(innerOption);  
  16.                             $("#lang, #secondCatIdId").jListbox();  
  17.                 }  
  18.             });  

这样就可以跨域进行ajax请求了。
分享到:
评论

相关推荐

    jquery跨域调用 js跨域调用

    jQuery跨域调用主要是通过JSONP(JSON with Padding)和CORS(Cross-Origin Resource Sharing)这两种机制来实现的。JSONP是一种非官方的跨域数据交互协议,而CORS是W3C标准,允许服务器声明哪些来源可以访问其资源...

    ajax 跨域请求问题 jquery jsonp

    **Ajax跨域请求问题与jQuery JSONP解析** 在Web开发中,Ajax技术被广泛用于实现页面的异步更新,但浏览器的同源策略(Same-Origin Policy)限制了Ajax请求只能向同源(协议、域名、端口均相同)的服务器发送。这在...

    Jquery跨域Ajax请求测试

    总之,jQuery提供了一种简单易用的方式来处理跨域Ajax请求,无论是通过JSONP还是CORS。理解并熟练掌握这些技术,对于构建现代Web应用至关重要。在实际项目中,根据具体需求和安全考虑选择合适的方法,确保数据能够...

    jquery ajax跨域html前台 php后台

    1. **jQuery的Ajax设置**:在使用Ajax进行跨域请求时,我们需要在`$.ajax()`方法中设置`dataType: 'jsonp'`。这告诉jQuery我们期望服务器返回JSON格式的数据,并通过JSONP机制来处理。 2. **JSONP原理**:JSONP的...

    jquery下利用jsonp跨域访问实现方法

    在JavaScript的世界里,由于同源策略的限制,浏览器禁止了不同源之间进行AJAX通信,但JSONP(JSON with Padding)作为一种巧妙的方式,允许我们绕过这个限制,实现在jQuery中进行跨域请求。本篇文章将深入探讨JSONP...

    ajax跨域调用wcf实例

    以下是实现AJAX跨域调用WCF服务的具体步骤和相关知识点: 1. **开启WCF服务的跨域支持**:在WCF服务的配置文件(通常是ServiceName.svc.cs或IServiceName.cs)中,需要启用跨域资源共享(CORS)。这可以通过添加`...

    JQuery Ajax跨域调用和非跨域调用问题实例分析

    JQuery Ajax技术在Web开发中应用广泛,其中,跨域调用与非跨域调用是开发人员经常遇到的问题。本文将详细介绍JQuery Ajax在跨域调用和非跨域调用中的一些实现技巧和操作注意事项,以便大家更好地应用。 首先,我们...

    Jquery与ajax用JSONP方式获取新浪短网址

    JSONP(JSON with Padding)是一种跨域数据交互协议,它...这个过程涉及到的知识点包括:JSONP工作原理、Jquery的ajax方法、跨域请求、URL编码以及API调用等。理解这些知识点对于进行前端开发和与各种API交互至关重要。

    jquery ajax jsonp跨域调用实例代码

    今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友

    jsonpajax跨域请求

    4. AJAX跨域: AJAX本身不支持跨域,但是通过CORS(Cross-Origin Resource Sharing,跨源资源共享)机制,可以实现AJAX的跨域请求。服务器需要在响应头中添加`Access-Control-Allow-Origin`字段,允许指定的源进行...

    Ajax跨域请求解决方案-JSONP

    本文将详细介绍JSONP的工作原理以及如何在ASP.NET网站开发中应用JSONP解决Ajax跨域问题。 首先,理解JSONP的基本概念。JSONP是一种非官方的数据交换格式,它的核心思想是利用HTML中的`&lt;script&gt;`标签不受同源策略...

    详解Ajax跨域(jsonp) 调用JAVA后台

    Ajax跨域调用是Web开发中一个常见的问题。当一个Web应用需要从不同的域名下获取数据时,就会遇到浏览器同源策略的限制。同源策略要求在浏览器中运行的脚本只能与和它相同的源交互,其中源包括协议、域名和端口号。当...

    jquery跨域调用webservice

    本文将详细解释如何利用jQuery通过JSONP(JSON with Padding)的方式实现跨域调用WebService。 #### 1. JSONP 的基本原理 JSONP 是一种解决跨域请求的有效手段,它通过动态创建`&lt;script&gt;`标签来请求跨域的数据,并...

    ajax跨域调用wcf实例--改分重传

    在本实例中,“ajax跨域调用wcf”是指通过Ajax技术实现对WCF服务的跨域请求。 **什么是Ajax跨域?** 在同源策略限制下,JavaScript通常不能访问不同源(协议、域名或端口不同)的资源。然而,为了实现Web应用的灵活...

    ASP.NET配合jQuery解决跨域调用的问题.txt

    ### ASP.NET配合jQuery解决跨域调用的问题 #### 跨域问题概述 在现代Web开发中,跨域问题是一个常见的安全限制机制。浏览器为了保护用户的隐私数据,实施了同源策略(Same-origin policy)。该政策规定,来自不...

    jquery跨域调用wcf

    **三、JQuery的AJAX跨域** JQuery的$.ajax()函数支持JSONP(JSON with Padding)和CORS(Cross-Origin Resource Sharing)两种跨域方式。 1. **JSONP**:JSONP是一种规避同源策略的方式,它通过动态插入`&lt;script&gt;`...

    ajax跨域解决办法

    【AJAX跨域解决办法】 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下更新部分网页的技术。然而,由于浏览器的同源策略限制,AJAX请求通常只能发送到与当前页面同一源的...

    jquery ajax中使用jsonp的限制解决方法

    jsonp 解决的是跨域 ajax 调用的问题。为什么要跨域 ajax 调用呢?这样可以在一个应用中直接在前端通过 js 调用另外一个应用(在不同的域名下)的 API。我们在实际应用中也用到了 jsonp ,但之前只知道 jsonp 的一个...

    浅谈JQuery+ajax+jsonp 跨域访问

    本文将详细介绍JQuery、ajax以及jsonp跨域访问的知识。 首先,jQuery作为一个广泛使用的JavaScript库,其提供的ajax方法极大地简化了HTTP通信操作。然而,当尝试通过ajax访问不同域下的资源时,就会遇到跨域限制...

    jquery与ajax调用,有代码 , 有说明,使ajax调用简单

    5. **跨域请求**:`jsonp`和`CORS`可以用来处理跨域Ajax请求。 **六、示例代码** 在"JQuery实战2:功能表单 - JQuery - AJAX - JavaEye论坛.files"这个压缩包中,可能包含了相关的代码示例和论坛讨论,你可以下载...

Global site tag (gtag.js) - Google Analytics