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请求不生效

时间: 2024-10-03 00:14:35

IE6—在链接click事件的响应函数中发送jsonp请求不生效的相关文章

如何在WinForm中发送HTTP请求

Winform窗体中发送HTTP请求 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: 1 string strURL = "http://localhost/Play/CH1/Service1.asmx/doSearch?keyword="; 2 strURL +=this.textBox1.Text; 3 System.Net.HttpWebRequest request; 4 // 创建一个HTTP请求 5

在后台程序中发送http请求并获取响应数据

一,在后台程序中发送http请求获取响应数据 1)以 http://libs.baidu.com/jquery/2.0.0/jquery.min.js 为例 二, 1) String result=""; BufferedReader in = null; URL url = null; try { url = new URL("http://libs.baidu.com/jquery/2.0.0/jquery.min.js"); } catch (Malforme

iOS中发送HTTP请求的方案

在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLCOnnection更加强大,推荐使用这种技术(2013年推出) CFNetwork:NSURL的底层,纯C语言 第三方框架 ASIHttpRequest:外号:“HTTP终结者”,功能及其强大,早已不维护 AFNETworking:简单易用,提供了基本够用的常用功能,维护和使用者居多 MKNetworkKit:简单易用,来自印

Redux中发送异步请求获取数据

一.在componentDidMount中进行异步数据的获取 二.通过initListAction创建action 三.然后再通过store.dispatch派发给store 四.store再自动转发给reducer 五.reducer通过深拷贝处理数据后,再将newState返回给store 原文地址:https://www.cnblogs.com/nayek/p/12388881.html

jquery中使用jsonp请求数据

//jquery部分的代码 1 $.ajax({ 2 type:'GET', 3 url:"http://192.168.0.224/jsonp.php", 4 data:"", 5 dataType:'jsonp', 6 jsonp: 'callback', 7 timeout: 2000, 8 success:function(res){ 9 alert(res.info); 10 } 11 }); //php部分的代码 1 <?php 2 header(

AngularJS中的JSONP实践

欢迎大家指导与讨论: ) 概念 首先呢,Json和JSONP是不一样的哦.Json呢,是众多数据存储的其中一种格式,是数据书写方式的其中一种.好比是大中华众多诗体的一种(比如说是七言诗吧).这种诗体规定了: 这种诗体要包含题目,每行诗句的字数(7个字) 等等的文本格式.而Json所规定的文本格式是这样子的 (Json格式示意图) 而JSONP呢,它是一种特殊的通讯方式,使用它能够轻松绕过浏览器的同源安全限制,达到加载来自不同源的资源(脚本, 图片, 其他)的效果.比如说,您是一个王国的王子,你意

jquery为链接a元素注册click事件并避免跳转现象

jquery为链接a元素注册click事件并避免跳转现象:在实际应用中,可能需要将链接a作为一个普通的按钮使用,但是由于点击按钮会导致跳转动作,下面就通过代码实例介绍一下如何实现点击功能,并且不会出现跳转现象,代码如下: <!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.

解决jQuery中dbclick事件触发两次click事件

首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbclick可以触发两次click事件.例如一个DOM元素div,既绑定了 click 事件,又绑定了 dblclick 事件,这两个事件分别要做独立的事情.事件处理上没有冲突,都可以各自完成各自的操作.双击的时候虽然是执行了 dblclick 事件,但是在这之前,也执行了click 事件,那么,如何来

jquery中对动态生成的标签不会响应click事件

Jquery中对ajax动态生成的html标签不会响应 $(selector).click(function.. 或者$(selector).bind('click',function.., 需要用.live. 我们这样绑定元素的click事件,以后jquery动态生成的元素,click事件也有效. $('.clickme').live('click', function() { alert("Live handler called."); });