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

先来看一段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参数的值必须加引号,否则执行会有问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值