jquery.getJson()跨域
由于浏览器的同源特性限制(Same_origin_policy),这样js去访问非本域下的资源,使用平常的做法就不会实现了。
要想完成跨域访问资源传统上有三个方法:
写道
The browser security model dictates that XMLHttpRequest, frames, etc. must have the same domain in order to communicate. That's not a terrible idea, for security reasons, but it sure does make distributed (service oriented, mash-up, whatever it's called this week) web development suck.
There are traditionally three solutions to solving this problem.
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".
还有另外一种实现方法就是jsonp(json + padding )
写道
I'm proposing a new technology agnostic standard methodology for the script tag method for cross-domain data fetching: JSON with Padding, or simply JSONP.
jQuery中的getJson就是使用这样的方法实现的,当然$.ajax方法也可以完成,这是jQuery的ajax最终高调用方法
使用getJson完成跨域操作需要客户端与服务器端两部分共同协作
客户端:js
写道
JSONP
If the URL includes the string "callback=?" (or similar, as defined by the server-side API), the request is treated as JSONP instead. See the discussion of the jsonp data type in $.ajax() for more details.
即在getJson的url参数末尾加个callback=?这样的参数
$.getJson('http://other-domain.com/get_json_data.htm?callback=?', function(data) {
alert(data);
});
服务器:java(struts2)
在正常的ajax返回数据的参数配置上多添加一个参数
callbackParameter,同时指定客户端传递过来的参数callback
<result type=”json”>
<param name=”callbackParameter”>callback</param>
</result>
原理是,在客户端类似生成一个<script type=“text/javascript”>callback(data);</script>这样一个在客户端执行的一个js代码片段。
[1]http://api.jquery.com/jQuery.getJSON/
[2]http://api.jquery.com/jQuery.ajax/
[3]http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/
[4]http://www.iteye.com/problems/45157
[5]http://www.iteye.com/problems/47527
[6]http://www.yindaoxian.com/html/web/Javascript_Ajax-13610.html
[7]http://en.wikipedia.org/wiki/Same_origin_policy
[8]http://lyzdz.com/index.php/archives/52
分享到:
相关推荐
本篇将详细介绍如何解决jQuery跨域问题,涉及的方法包括$.get、$.post和$.getJSON等。 首先,我们需要理解什么是跨域。同源策略是浏览器为保障安全而实施的一项机制,它规定JavaScript只能访问与当前页面同源(协议...
jQuery的$.getJSON()方法是另一个强大的工具,它是$.ajax()的简化版本,专门用于从服务器获取JSON数据。只需要提供URL和回调函数,jQuery会自动处理JSONP请求(如果需要跨域)以及数据解析。这极大地简化了数据交互...
jQuery提供了`.ajax()`和`.getJSON()`两个方法来实现JSONP。下面将详细解释这两个方法以及JSONP的工作原理。 1. **jQuery的`.ajax()`方法:** 在提供的代码示例中,`$.ajax()`方法用于发起一个跨域GET请求。设置`...
### jQuery $.getJSON() 跨域请求知识点总结 #### 跨域请求基础 在Web开发中,跨域请求是一个非常常见的问题,它的本质是浏览器的同源策略。同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源...
在文中描述的内容里,$.getJSON 是 jQuery 提供的一种特殊方法,用于发送一个 GET 请求,并期望服务器返回 JSON 格式的数据。$.getJSON 的实现基本上是$.ajax 方法的一个简化版本,专注于获取 JSON 数据。尽管两个...
本例中的“getJSON”很可能指的是jQuery库中的getJSON方法,它支持JSONP机制来实现跨域数据获取。 JSONP的工作原理是利用`<script>`标签不受同源策略限制的特点,通过动态创建`<script>`元素并设置其src属性为...
本文将详细讨论如何使用 jQuery 的 AJAX 和 `getJSON` 实现跨域访问。 首先,了解跨域的基本概念。跨域是指一个源(协议+域名+端口)下的文档或脚本尝试请求另一个源的资源时,浏览器会实施同源策略,阻止这种行为...
在使用$.getJSON()进行跨域请求时,虽然这是一种快速实现跨域的方法,但开发者需要考虑数据安全性和服务端支持等因素。对于敏感或大量数据,建议采取更安全的跨域策略,如服务器端设置CORS响应头策略,或者采用代理...
在jQuery中,我们可以使用`$.ajax()`或`$.getJSON()`方法。当设置`dataType`为'jsonp'时,jQuery会自动处理JSONP请求。JSONP是一种绕过同源策略的方法,它通过在目标服务器上返回一个JavaScript函数调用,将数据作为...
JSONP(JSON with Padding)是解决这一问题的传统方法之一,而jQuery的getJSON方法在实现跨域请求时,也会采用类似JSONP的方式。 首先,我们来看一下JSONP的基本概念。JSONP是一种利用`<script>`标签可以跨域请求...
在前端开发中,处理JSON数据是必不可少的一部分,而jQuery库提供的getJSON方法则是获取JSON数据的一种便捷方式。本知识点将详细介绍如何使用jQuery的getJSON方法,以及相关的技巧和完整示例。 首先,我们需要了解...
在IT行业中,跨域访问是Web开发中一个重要的概念,特别是在使用JavaScript、JSP、JSON以及前端库如jQuery时。本教程将详细讲解如何利用这些技术实现跨域数据交互。 首先,我们需要理解“跨域”这个术语。在浏览器的...
此外,jQuery还提供了`.getJSON()`方法,它是`.ajax()`的一个简化的版本,专门用于获取JSON数据: ```javascript $.getJSON('path_to_your_json_file.json', function(data) { console.log(data); // 处理JSON...
jQuery 提供了一个非常方便的解决方案,尤其是从1.2版本开始,它引入了`$.getJSON()`方法,这个方法支持JSONP(JSON with Padding)协议,从而实现跨域数据获取。JSONP是一种绕过同源策略的技术,它通过动态插入`...
具体实现过程中,开发者可能使用了jQuery的`$.ajax()`或`$.getJSON()`方法发起跨域请求。例如: ```javascript $.ajax({ url: 'http://example.com/weather', type: 'GET', dataType: 'jsonp', success: ...
总之,通过这篇文章,我们可以了解到如何使用jQuery的ajax和$.getJSON方法请求本地JSON文件,并将异步获取的数据通过JavaScript动态展示在前端页面上。这些知识点对于进行Web开发尤其是涉及到前后端分离、前后端数据...
JavaScript 和 jQuery 是Web开发中广泛使用的两种技术,它们在实现跨域访问方面起着关键作用。跨域访问是Web应用程序中常见的需求,特别是在Ajax请求、API调用或数据共享时。由于浏览器的安全策略,不同域名、协议或...
2. 跨域请求:使用$.ajax或$.getJSON进行跨域请求,只需添加`xhrFields`配置项,指定`withCredentials`为true,以支持携带cookie进行身份验证。 ```javascript $.ajax({ url: 'http://other-origin.com/api/data',...
在JavaScript中,跨域访问通常受到浏览器同源策略的限制,这意味着脚本只能访问与当前页面同源(协议、域名、端口都相同)的资源。当尝试通过AJAX从本地文件系统获取JSON数据时,由于文件系统不属于HTTP服务器,因此...