`

由于jsonp书写规范引起的兼容性问题

    博客分类:
  • js
 
阅读更多

先来看一段jsonp代码:

$.ajax({
	url : "http://isspre.cnsuning.com/iss/turingShelf/ajaxIsNormalLevel_ProductObj.lazyLoadSmart.html",
	async : false,
	cache : false,
	type  : "GET",
	dataType : "jsonp",
	jsonp : ProductObj.lazyLoadSmart,
	error : function(XMLHttpRequest, textStatus, errorThrown) {
		console.log(textStatus);
	},
	success : function(data) {
		console.log(data);
	}
});

(ProductObj.lazyLoadSmart是回调函数,此处省略)

这段代码在Firefox 40以下版本里执行时,请求状态一直为1(参考:http://guwq2014.iteye.com/blog/2271926) ,请求一直没有发送出去(注意:是请求根本没有发送出去,更不用说有返回了)。为什么会这样呢?

          原来这段jsonp代码书写不规范,导致低版本浏览器对这段代码的兼容性有问题。

规范的写法是:

$.ajax({
	url : "http://isspre.cnsuning.com/iss/turingShelf/ajaxIsNormalLevel_ProductObj.lazyLoadSmart.html",
	async : false,
	cache : false,
	type  : "GET",
	dataType : "jsonp",
	timeout : 5000,
	jsonp : "jsonpcallback",
        jsonpCallback : "ProductObj.lazyLoadSmart",
	error : function(XMLHttpRequest, textStatus, errorThrown) {
		console.log(textStatus);
	},
	success : function(data) {
		console.log(data);
	},
	complete:function(){
		
	}
});

 注意jsonp和jsonpcallback部分的写法,特别是jsonp和jsonpcallback参数的值必须加引号,否则执行会有问题。

分享到:
评论

相关推荐

    JSONP三种方式解决跨域问题

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

    JSONP解决跨域问题

    前端使用jquery,datatype采用jsonp,服务端采用C#编写的webService

    js跨域jsonp的使用

    jsonp的原理 jsonp的使用,使用jsonp解决js跨域问题!

    JSONP简单调用实例

    JSONP简单调用实例。ASP.NET和纯HTML。jQuery的$.ajax的调用!jsonP说白了,就是在json字符串外面包上一个:参数名称+左右括弧!只是包了个:jsonpCallback() 而已! 相关文章:...

    JSONP 实例

    JSONP 实例

    Jsonp和java操作

    Jsonp和java操作

    后台php设置jsonp

    后台php设置jsonp

    解决跨域封装的jsonp.js文件

    解决跨域封装的jsonp

    JSONP实现原理

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的...

    神奇的理解jsonp

    总算理解jsonp的应用了,以前只知道jsonp但是还是不会再代码中应用,看了这个以后突然恍然大悟,妈妈再也不用担心我学不会jsonp了(/坏笑,以上纯属虚构)

    jsonp XML解析

    jsonp XML解析

    跨域访问解决方法-jsonp

    使用jsonp跨域获取json数据。Ajax获取JAVA服务器json数据。

    纯servlet实现JSONP

    纯servlet实现JSONP 非常简单易懂的一个例子。

    Jsonp+asp.net

    Jquery easyui+Jsonp+asp.net+翻页 事件版

    详解如何在Vue项目中发送jsonp请求

    在页面a中由前端发送一个jsonp请求到客户方,得到一个token值 前端得到token值后向自己后端发送一个请求,后端根据token去redis(token的值就是redis里的key)里取值(key=token的值,value=用户信息等)判断用户是否已...

    ajax jsonp跨域传参

    ajax jsonp跨域传参,里面有源码,不过写在txt中了,很适合调用别人的接口

    Ajax跨域请求解决方案-JSONP

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

    jsonp原理.txt

    交接jsonp,轻松实现跨域方法的调用,很值得学习的东西

    自己封装jsonp.js

    自己封装jsonp.js

    Ajax结合Jsonp实例

    使用Jquery中的Aajx方法利用Jsonp方式访问豆瓣公开的api接口,跨域获取书籍信息。

Global site tag (gtag.js) - Google Analytics