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标签

IE6—在链接click事件的响应函数中发送jsonp请求不生效,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。