IE6—在链接click事件的响应函数中发送jsonp请求不生效
1 $("#link").click(function(){ 2 $.ajax({ 3 type: ‘GET‘, 4 dataType: ‘jsonp‘, 5 url: ‘http://test.local.com/getdetail‘, 6 data:{id:1}, 7 success: function(response){ 8 //IE6不执行 9 alert("jsonp success"); 10 }, 11 error: function(request, status, error){ 12 13 } 14 }); 15 16 })
1.现象:在IE6下,发送jsonp请求的script脚本,在建立http连接之后,就会停止发送请求,问题很诡异,调试很久找不到原因。google了一下,在stackoverflow找到答案(看看人家国外的问答网站,就是给力啊)。
2.解决方案:在click响应函数中,调用evt.preventDefault()。如果evt.preventDefault()不能执行(某些特殊情况),那就使用setTimeout调用jsonp(猜测,估计没问题)
1 $("#link").click(function(evt){ 2 $.ajax({ 3 type: ‘GET‘, 4 dataType: ‘jsonp‘, 5 url: ‘http://test.local.com/getdetail‘, 6 data:{id:1}, 7 success: function(response){ 8 //IE6也可以执行 9 alert("jsonp success"); 10 }, 11 error: function(request, status, error){ 12 13 } 14 }); 15 //IE6 hack 16 evt.preventDefault(); 17 })
以上转自http://blog.csdn.net/cwb0525/article/details/7744140
解决IE6 JSONP无响应的问题。
在项目开发中jsonp的请求在IE7,IE8,FF,Chrome,Safari中都木有问题。
未读IE6死活不出来结果。
后来找到了问题所在,在调用这个jsonp的方法是通过一个<a>标签的onclick事件绑定的。
<a href="javascript:;" onclick="dothing()" >jsonpRequest</a>
问题就出在这里了。
其中doting()为一个包含jsonp请求的方法名。
这里的href=“javascript:;” 原本的作用是为了让用户点击的时候不响应,不让浏览器跳回顶部,不刷新页面。
但是同时在IE6中它也阻断了jsonp的回调函数。
导致无法继续执行。
解决办法就是,干掉href属性。直接一个光秃秃的<a>标签就好了。
如下:
<a onclick="dothing()" >jsonpRequest</a>
以上内容转自http://www.cnblogs.com/didi/archive/2010/12/31/1923378.html
根据上面两种方案,可以使用其他标签代替a标签,例如span标签
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。