jquery1.2之后getJSON支持跨域访问
$.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参数进行解析
接口返回一个匿名函数的调用,与getScript类似
接口可以使用下列返回函数
//适用于getScript,getJSON调用
function return_data($json_string)
{
$return_data = $json_string;
if (isset($_GET['callback']))
{
$return_data = $_GET['callback']=='?' ? '('.$json_string.')' : $_GET['callback']."($json_string);";
}
echo $return_data;
exit;
}
应用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;
});
});
//第二种写法
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
{
tags: "cat",
tagmode: "any",
format: "json"
},
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(...)
分享到:
相关推荐
JSONP(JSON with Padding)...总之,JSONP是jQuery中实现跨域访问的一种常见方法,尤其在不支持CORS的旧浏览器环境中非常有用。但随着技术的发展,CORS已成为更推荐的跨域解决方案,因为它提供了更多的控制和安全性。
本例中的“getJSON”很可能指的是jQuery库中的getJSON方法,它支持JSONP机制来实现跨域数据获取。 JSONP的工作原理是利用`<script>`标签不受同源策略限制的特点,通过动态创建`<script>`元素并设置其src属性为...
本文将详细讨论如何使用 jQuery 的 AJAX 和 `getJSON` 实现跨域访问。 首先,了解跨域的基本概念。跨域是指一个源(协议+域名+端口)下的文档或脚本尝试请求另一个源的资源时,浏览器会实施同源策略,阻止这种行为...
总之,jQuery通过`$.getJSON()`和JSONP机制为开发者提供了一种简单的方式来实现跨域数据请求,使得在前后端分离的架构中,前端可以轻松地获取和处理来自其他域的数据。虽然有一些限制,但在许多场景下,JSONP仍然是...
这是一个前端后端通过JQuery的getJSON函数交互json数据的例子。 前端网页是front.html,后端处理的模块是back.jsp 把back.jsp、front.html及jquery-1.8.3.min.js部署在Tomcat的webapps的ROOT下,通过在浏览器输入...
在jQuery中,我们可以使用`$.ajax()`或`$.getJSON()`方法。当设置`dataType`为'jsonp'时,jQuery会自动处理JSONP请求。JSONP是一种绕过同源策略的方法,它通过在目标服务器上返回一个JavaScript函数调用,将数据作为...
JSONP(JSON with Padding)是解决这一问题的传统方法之一,而jQuery的getJSON方法在实现跨域请求时,也会采用类似JSONP的方式。 首先,我们来看一下JSONP的基本概念。JSONP是一种利用`<script>`标签可以跨域请求...
通过了解 jQuery $.getJSON() 跨域请求的工作原理和示例,我们可以看到跨域请求在Web开发中的实用性和局限性。JSONP 是一个实用的解决方案,特别适合用于那些你没有权限修改服务器响应的场景。但是,由于其只支持 ...
本篇将详细介绍如何解决jQuery跨域问题,涉及的方法包括$.get、$.post和$.getJSON等。 首先,我们需要理解什么是跨域。同源策略是浏览器为保障安全而实施的一项机制,它规定JavaScript只能访问与当前页面同源(协议...
在前端开发中,处理JSON数据是必不可少的一部分,而jQuery库提供的getJSON方法则是获取JSON数据的一种便捷方式。本知识点将详细介绍如何使用jQuery的getJSON方法,以及相关的技巧和完整示例。 首先,我们需要了解...
具体实现过程中,开发者可能使用了jQuery的`$.ajax()`或`$.getJSON()`方法发起跨域请求。例如: ```javascript $.ajax({ url: 'http://example.com/weather', type: 'GET', dataType: 'jsonp', success: ...
在跨域访问中,JSON通常作为数据传输的载体,因为它可以被JavaScript轻松处理。 jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。在处理跨域请求时,jQuery提供了$.ajax...
jQuery作为流行的JavaScript库,提供了一些机制来处理跨域访问。 JQuery的跨域解决方案主要依赖于JSONP(JSON with Padding)技术。JSONP是一种绕过同源策略的方式,它利用HTML中的`<script>`标签没有同源策略限制...
此外,jQuery还提供了`.getJSON()`方法,它是`.ajax()`的一个简化的版本,专门用于获取JSON数据: ```javascript $.getJSON('path_to_your_json_file.json', function(data) { console.log(data); // 处理JSON...
标题中的“利用jsonp解决js读取本地json跨域的问题”是指在JavaScript中,由于同源策略的限制,AJAX无法直接从本地文件系统获取JSON数据。然而,JSONP(JSON with Padding)是一种绕过同源策略的技术,尤其适用于GET...
这是一份非常有用的Jquery跨域访问实例,里面提供了3种方法,前台后台都有涉及,希望对你们会有所帮助
利用GETJSON方法也能实现跨域请求,它的基本写法是: ```javascript $.getJSON("***", function(json) { // 处理返回的JSON数据 }); ``` 使用GETJSON方法时,服务端同样需要处理JSONP格式的请求,确保返回的数据...
2. jQuery使用CORS:在`$.ajax()`方法中,设置`dataType: 'json'`或其它类型,并在请求头中设置`crossDomain: true`,jQuery会自动处理CORS请求。 四、jQuery跨域调用示例 ```javascript // JSONP 示例 $.ajax({ ...
JavaScript 和 jQuery 是Web开发中广泛使用的两种技术,它们在实现跨域访问方面起着关键作用。跨域访问是Web应用程序中常见的需求,特别是在Ajax请求、API调用或数据共享时。由于浏览器的安全策略,不同域名、协议或...