`
jessen163
  • 浏览: 462905 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

关于jquery中 getJSON跨域访问

阅读更多
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(...)
分享到:
评论

相关推荐

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

    JSONP(JSON with Padding)...总之,JSONP是jQuery中实现跨域访问的一种常见方法,尤其在不支持CORS的旧浏览器环境中非常有用。但随着技术的发展,CORS已成为更推荐的跨域解决方案,因为它提供了更多的控制和安全性。

    getJSON解决 跨域问题例子

    本例中的“getJSON”很可能指的是jQuery库中的getJSON方法,它支持JSONP机制来实现跨域数据获取。 JSONP的工作原理是利用`&lt;script&gt;`标签不受同源策略限制的特点,通过动态创建`&lt;script&gt;`元素并设置其src属性为...

    jquery的ajax和getJson跨域.docx

    本文将详细讨论如何使用 jQuery 的 AJAX 和 `getJSON` 实现跨域访问。 首先,了解跨域的基本概念。跨域是指一个源(协议+域名+端口)下的文档或脚本尝试请求另一个源的资源时,浏览器会实施同源策略,阻止这种行为...

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

    总之,jQuery通过`$.getJSON()`和JSONP机制为开发者提供了一种简单的方式来实现跨域数据请求,使得在前后端分离的架构中,前端可以轻松地获取和处理来自其他域的数据。虽然有一些限制,但在许多场景下,JSONP仍然是...

    用JQuery里的getJSON函数进行跨域远程调用

    这是一个前端后端通过JQuery的getJSON函数交互json数据的例子。 前端网页是front.html,后端处理的模块是back.jsp 把back.jsp、front.html及jquery-1.8.3.min.js部署在Tomcat的webapps的ROOT下,通过在浏览器输入...

    jquery跨域获取json

    在jQuery中,我们可以使用`$.ajax()`或`$.getJSON()`方法。当设置`dataType`为'jsonp'时,jQuery会自动处理JSONP请求。JSONP是一种绕过同源策略的方法,它通过在目标服务器上返回一个JavaScript函数调用,将数据作为...

    php jq jquery getJSON跨域提交数据完整版

    JSONP(JSON with Padding)是解决这一问题的传统方法之一,而jQuery的getJSON方法在实现跨域请求时,也会采用类似JSONP的方式。 首先,我们来看一下JSONP的基本概念。JSONP是一种利用`&lt;script&gt;`标签可以跨域请求...

    jquery $.getJSON()跨域请求

    通过了解 jQuery $.getJSON() 跨域请求的工作原理和示例,我们可以看到跨域请求在Web开发中的实用性和局限性。JSONP 是一个实用的解决方案,特别适合用于那些你没有权限修改服务器响应的场景。但是,由于其只支持 ...

    解决JQurey跨域问题$.get|$.post|$.getJSON等等统统可跨域

    本篇将详细介绍如何解决jQuery跨域问题,涉及的方法包括$.get、$.post和$.getJSON等。 首先,我们需要理解什么是跨域。同源策略是浏览器为保障安全而实施的一项机制,它规定JavaScript只能访问与当前页面同源(协议...

    jQuery使用getJSON方法获取json数据完整示例

    在前端开发中,处理JSON数据是必不可少的一部分,而jQuery库提供的getJSON方法则是获取JSON数据的一种便捷方式。本知识点将详细介绍如何使用jQuery的getJSON方法,以及相关的技巧和完整示例。 首先,我们需要了解...

    Ajax +jquery跨域获取JSON

    具体实现过程中,开发者可能使用了jQuery的`$.ajax()`或`$.getJSON()`方法发起跨域请求。例如: ```javascript $.ajax({ url: 'http://example.com/weather', type: 'GET', dataType: 'jsonp', success: ...

    js+jsp+json+tomcat跨域访问

    在跨域访问中,JSON通常作为数据传输的载体,因为它可以被JavaScript轻松处理。 jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。在处理跨域请求时,jQuery提供了$.ajax...

    JQuery跨域访问解决方案

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

    jQuery ajax读取json文件内容

    此外,jQuery还提供了`.getJSON()`方法,它是`.ajax()`的一个简化的版本,专门用于获取JSON数据: ```javascript $.getJSON('path_to_your_json_file.json', function(data) { console.log(data); // 处理JSON...

    利用jsonp解决js读取本地json跨域的问题

    标题中的“利用jsonp解决js读取本地json跨域的问题”是指在JavaScript中,由于同源策略的限制,AJAX无法直接从本地文件系统获取JSON数据。然而,JSONP(JSON with Padding)是一种绕过同源策略的技术,尤其适用于GET...

    Jquery 跨域访问 具体实例

    这是一份非常有用的Jquery跨域访问实例,里面提供了3种方法,前台后台都有涉及,希望对你们会有所帮助

    jquery中ajax处理跨域的三大方式

    利用GETJSON方法也能实现跨域请求,它的基本写法是: ```javascript $.getJSON("***", function(json) { // 处理返回的JSON数据 }); ``` 使用GETJSON方法时,服务端同样需要处理JSONP格式的请求,确保返回的数据...

    jquery跨域调用 js跨域调用

    2. jQuery使用CORS:在`$.ajax()`方法中,设置`dataType: 'json'`或其它类型,并在请求头中设置`crossDomain: true`,jQuery会自动处理CORS请求。 四、jQuery跨域调用示例 ```javascript // JSONP 示例 $.ajax({ ...

    javascript/jquery 跨域访问

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

Global site tag (gtag.js) - Google Analytics