`

什么是jsonp?【ajax跨域的解决方案】

阅读更多
Web2.0时代大家都用ajax,ajax取数据前一段时间大家都用xml,后来大家发现了一种更好的,更有效,也更小的表达数据的方式这就是jason,jason是利用javascript的特性来表示变量值的方法,例如:

var site = {name:'宝宝孕历',url:'http://www.baobaoyunli.com/'};


这个相信多数人都知道jason,但是什么是jsonp呢?


出现jsonp也和ajax有关系,因为ajax有一个缺陷(这个缺陷是为用户电脑安全考虑的),就是不能跨域取数据,例如我在www.baobaoyunli.com不可以用ajax请求abc.baobaoyunli.com的数据,如果请求浏览器会报错。怎么办这是个问题,于是jsonp应运而生了,换句话说,jsonp是为了解决ajax不能跨域的问题才出现的,jsonp可以解决浏览器跨域问题。


jsonp如何解决跨域问题呢?通过欺骗浏览器,让浏览器通过不验证是否在同一个域的方式,获得jason数据,如何做,其实很简单,请看示例:


在需要跨域调用ajax的页面上有如下代码

function callAfterGetData(){
//do something
}




在abc.baobaoyunli.com/data.jason中输出的内容示例:

var site = {name:'宝宝孕历',url:'http://www.baobaoyunli.com/'};
callAterGetData();

data.jason中的内容分两部分,一部分是ajax要取的jason内容,另外一部分是取完数据之后的处理方法调用。


这样就从另外一个方面解决了ajax不能跨域的问题。但是这种方法是有一定缺陷的,用过ajax的人都知道,在ajax请求时readyState改变会引发事件,告诉我们ajax调用成功了还是出错了。但是用jsonp这个方法就没有这种状态,如果出错了没办法发出出错通知。
1
4
分享到:
评论
3 楼 silvernet 2010-09-02  
  jasonp 看楼主的帖子和评论,我以为又出新技术了,原来是jsonp嘛。
2 楼 yukaizhao 2009-05-22  
可以用setTimeout在一定时间后提示超时
1 楼 jianfeng008cn 2009-05-21  
调用的页面定一个标志不就可以了,在jason的后面加个延时提示之类的,反正ajax请求超时了也是要通知的。

相关推荐

    js跨域解决方案

    js跨域解决方案

    Ajax跨域请求解决方案-JSONP

    该资源为ASP.NET网站开发技术中使用Ajax进行跨域请求时利用JSONP方案解决浏览器同源策略限制的源码,比较简单,仅供参考

    jsonp json ajax跨域调用

    这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。 但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要...

    Ajax跨域问题及解决方案(jsonp,cors)

    解决方案: 1.jsonp  在远程服务器上设法动态的把数据装进js格式的文本代码段中,供客户端调用和进一步处理;在前台通过动态添加script标签及src属性,表面看上去与ajax极为相似,但是,这和ajax并没有任何关系;...

    Ajax跨域问题 解决方案

    关于跨域,有N种类型,本文只专注于ajax...什么是ajax跨域 o原理 o表现(整理了一些遇到的问题以及解决方案) 如何解决ajax跨域 oJSONP方式 oCORS方式 o代理请求方式 如何分析ajax跨域 ohttp抓包的分析 o一些示例

    PHP下ajax跨域的解决方案之jsonp实例分析.docx

    PHP下ajax跨域的解决方案之jsonp实例分析.docx

    Ajax跨域访问解决方案.doc

    Ajax跨域访问解决方案,访问第三方网站的资源

    JSONP三种方式解决跨域问题

    1、地址...演示跨域问题以及跨子域名解决方法 2、地址http://a.test.com:8888/testAjaxCross/public/jsonp.do 演示jsonp解决跨域问题的三种方案jsonp、$getJSON、$ajax等

    ajax跨域,这应该是最全的解决方案了

    其它的还有Cookie跨域iframe跨域,LocalStorage跨域等这里不做介绍),内容大概如下:什么是ajax跨域原理表现(整理了一些遇到的问题以及解决方案)如何解决ajax跨域JSONP方式CORS方式代理请求方式如何分析ajax跨域http...

    PHP下ajax跨域的解决方案之jsonp实例分析

    本文实例讲述了PHP下ajax跨域的解决方案之jsonp。分享给大家供大家参考,具体如下: 首先要说明一下json和jsonp的区别? json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式。 var person = { "name":...

    浅析JSONP之解决ajax跨域问题

    本文主要讲解了如何去解决AJAX跨域的问题,从跨域的简单原理到JONP实现模式详细的讲解整个解决方案,最后利用jQuery可以很方便的实现JSONP来进行跨域访问。

    Ajax跨域的完美解决方案

    这里对跨域做个简单介绍以及提供几种解决办法。  由于浏览器实现的同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,所以AJAX是不允许跨域的。这里提供自己常用的三种方法: 1、jsonp...

    轻松搞定jQuery+JSONP跨域请求的解决方案

    了解了jsonp之后,大家应该也都明白了,jsonp主要就是用来实现跨域的获取数据,今天我们就来详细探讨下如何在实际中应用jsonp实现跨域

    AJAX跨域实现的三种方式

    关于AJAX跨域。分析了原因及解决的方案,从各个角度阐述问题和解决问题。

    jquery的ajax跨域请求原理和示例

    直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。分别是JQuery...

    跨域解决方案

    基本的方法入手,从jsonp、jquery的ajax不同的角度去处理跨域的问题

    ajax跨域请求js拒绝访问的解决方法

    dataType:”json”, } 不能用jsonp 因为jsonp发送数据 type 为 ... 您可能感兴趣的文章:跨域请求之jQuery的ajax jsonp的使用解惑AJAX跨域请求json数据的实现方法jQuery.ajax 跨域请求webapi设置headers的解决方案JQuer

    Ajax请求WebService跨域问题的解决方案

    3、解决方案: (1) JSONP:只支持GET方式 (2) CROS:跨域资源共享 以下为CROS解决方案:  a.在WebService接口加上响应头信息:  b.在web.config文件中加上相关配置节信息: 运用a或者b的解决方案后,浏览器头...

Global site tag (gtag.js) - Google Analytics