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

转:Jquery的跨域调用

阅读更多

转:http://www.iteye.com/topic/260647

 

Ajax的应用中,由于安全的问题,浏览器默认是不支持跨域调用的。传统解决的方法,包括:(参考http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/)

Local proxy:
Needs infrastructure (can't run a serverless client) and you get double-taxed on bandwidth and latency (remote - proxy - client).
Flash:
Remote host needs to deploy a crossdomain.xml file, Flash is relatively proprietary and opaque to use, requires learning a one-off moving target programming langage.
Script tag:
Difficult to know when the content is available, no standard methodology, can be considered a "security risk".

以上方法都各有缺陷,都不是很好多解决方案。后来出现了一种叫JSON with Padding 的技术,简称 JSONP .(原理参考http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/),应用JSONP可以实现JSON数据的跨域调用。非常的幸运,JQuery1.2以后支持JSONP的应用。下面侧重说明在JQuery 中,Json的跨域调用。

      应用JSONP实现Json数据跨域调用,需要服务器端与客户端的合作完成。引用Jquery 官方的例子,客户端掉用如下:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
          $.each(data.items, function(i,item){
            $("<img/>").attr("src", item.media.m).appendTo("#images");
            if ( i == 3 ) return false;
          });
        });

 

    注意这里调用的地址中jsoncallback=?是关键的所在!其中,符号会被Query自动替换成其他的回调方法的名称,具体过程和原理我们这里不理会。我们关心的是jsoncallback=?起什么作用了?原来jsoncallback=?被替换后,会把方法名称传给服务器。我们在服务器端要做什么工作呢?服务器要接受参数jsoncallback,然后把jsoncallback的值作为JSON数据方法名称返回,比如服务器是JSP,我们会这样做:

 

      ...

      String jsoncallback=request.getParameter("jsoncallback");

      ...

      out.print(jsoncallback+"({\"account\":\"XX\",\"passed\":\"true\",\"error\":\"null\"})");

 

Jquery 取得的数据可能如下:

      JQUET0988788({"account":"XX","passed":"true","error":"null"})

 

总结,用JSONP要做两件事:

      1/请求地址加参数:jsoncallback=?

      2/服务器段把jsoncallback的值作为方法名传回来,如JQUET098788(...)

分享到:
评论

相关推荐

    jquery跨域调用 js跨域调用

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

    jquery跨域调用webservice

    ### jQuery 跨域调用 WebService 的实现方法 在现代Web开发中,跨域问题是一个常见的挑战,尤其是在涉及不同源的服务交互时。本文将详细解释如何利用jQuery通过JSONP(JSON with Padding)的方式实现跨域调用...

    jquery跨域调用wcf

    本篇文章将详细探讨如何使用JQuery实现跨域调用Windows Communication Foundation (WCF)服务。 **一、理解跨域** 跨域是指浏览器的同源策略限制了JavaScript从一个域名下的网页向另一个域名下的资源发送Ajax请求。...

    Jquery跨域Ajax请求测试

    本示例"Jquery跨域Ajax请求测试"将详细讲解如何利用jQuery实现这一功能。 首先,了解同源策略是理解跨域问题的关键。同源策略是浏览器为了保障用户安全而设定的一项机制,它规定了只有来自同一协议、同一域名和同一...

    JQuery跨域访问解决方案

    jQuery作为流行的JavaScript库,提供了一些机制来处理跨域访问。 JQuery的跨域解决方案主要依赖于JSONP(JSON with Padding)技术。JSONP是一种绕过同源策略的方式,它利用HTML中的`&lt;script&gt;`标签没有同源策略限制...

    jquery跨域实例java

    自己做的小例子,关于跨域调用。用的是jquery. 里面两个工程。A和B。用A调用B。 放在tomcat或myeclipse中就可以跑起来。以前做建行的项目。用到的。很实用。 两个工程可以放在不同的机器上。IP也不同。相当...

    北大青鸟在线培训:JQuery.rar

    2. **链式操作**:jQuery 方法返回的是 jQuery 对象,这使得我们可以连续调用多个方法,如 `$("#myDiv").hide().slideUp();`。 3. **事件处理**:jQuery 提供了简化的事件绑定,如 `$("p").click(function() {...})...

    javascript/jquery 跨域访问

    JavaScript 和 jQuery 是Web开发中广泛使用的两种技术,它们在实现跨域访问方面起着关键作用。跨域访问是Web应用程序中常见的需求,特别是在Ajax请求、API调用或数据共享时。由于浏览器的安全策略,不同域名、协议或...

    Jquery跨域Json请求处理

    ### Jquery跨域Json请求处理详解 #### 一、跨域问题概述 在现代Web开发中,跨域问题是一个常见的技术挑战。简单来说,当一个网页尝试从不同的源(源可以理解为协议、域名或者端口号)加载资源时,就会遇到跨域限制...

    JAVA调用外接设备(制卡机)---JQuery跨域

    2. **JQuery跨域**: - 跨域是浏览器的一项安全策略,限制了JavaScript脚本只能访问同一源下的资源。JQuery提供了解决跨域问题的方法,如JSONP(JSON with Padding)和CORS(Cross-Origin Resource Sharing)。 - ...

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

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

    Jquery Ajax 跨域调用asmx类型 WebService范例代码

    摘要:Ajax 在 Web 2.0 时代起着非常重要的作用,然而有时因为同源策略 (SOP)(俗称:跨域问题(cross domain)) 它的作用会受到限制。在本文中,将学习如何克服合作限制。本文以asmx方式搭建webservice作为测试用...

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

    本文实例讲述了JQuery Ajax跨域调用和非跨域调用问题。分享给大家供大家参考,具体如下: 现在的互联网技术发展的越来越快,我们在开发过程中遇到的问题也越来越多。比如当我们需要进行跨域访问数据的时候该如何进行...

    jQuery跨域问题解决方案

    在标题“jQuery跨域问题解决方案”中提到的JSONP(JSON with Padding)便是其中一种。JSONP允许跨域访问,其工作原理是允许用户传递一个回调函数名给服务器,然后服务器将返回一段JavaScript代码,其中包括了调用该...

    jquery跨域获取json

    标题 "jquery跨域获取json" 涉及到的是JavaScript中的一个常见问题,即如何在浏览器环境中使用jQuery库跨越域限制获取JSON数据。这通常涉及到AJAX请求和JSONP(JSON with Padding)技术。 首先,我们需要理解Web...

    js跨域调用

    跨域调用是解决这一问题的关键技术。在本实例中,我们将讨论如何使用JS实现跨域调用WebService。"JqCrossDomain"这个文件名可能指的是使用jQuery库来处理跨域请求,因为jQuery提供了一些方便的方法来简化这个过程。 ...

    ajax跨域调用wcf实例

    在WCF中实现跨域调用,我们需要配置服务以允许来自不同源的请求。 以下是实现AJAX跨域调用WCF服务的具体步骤和相关知识点: 1. **开启WCF服务的跨域支持**:在WCF服务的配置文件(通常是ServiceName.svc.cs或...

    Ajax +jquery跨域获取JSON

    这里的"Ajax + jQuery跨域获取JSON"是一个典型的Web开发技术应用场景,主要用于解决Web应用程序中不同源之间的数据共享问题。在本案例中,开发者成功地实现了跨域请求以获取JSON数据,并将这些数据用于展示天气预报...

    jQuery跨域问题

    jQuery跨域问题主要涉及到以下几种情况: 1. JSONP(JSON with Padding):JSONP是一种绕过同源策略的方法,通过动态插入`&lt;script&gt;`标签来请求数据。jQuery的`$.ajax()`或`$.getScript()`函数支持JSONP。当设置`...

    Jquery跨域请求的实现

    **jQuery 跨域请求的实现** 在Web开发中,由于同源策略的限制,JavaScript通常无法直接发起跨域请求,即请求与当前页面不在同一域名下的资源。然而,随着Web应用的发展,有时我们需要从不同源获取数据,例如,从API...

Global site tag (gtag.js) - Google Analytics