我制作一个jquery插件看起来像:
(function($){
$.fn.plugin_name = function(){
var methods = {
getSomeThing: function(callback){
$.ajax({
type: 'GET',
dataType: 'jsonp',
url: 'http://thirdparty.com/get',
success: function(response){
callback(response);
}
});
},
getDetail: function(callback){
$.ajax({
type: 'GET',
dataType: 'jsonp',
url: 'http://thirdparty.com/getdetail',
data:{id:1},
success: function(response){
//this code block has never executed in IE6
},
error: function(request, status, error){
alert(request.statusText); // i get "success" in IE6
alert(status); // i get "parseerror" in IE6
alert(error.error); // i get [object Error] in IE6
}
});
}
};
return this.each(function(){
var self = $(this);
methods.getSomeThing(function(response){ // work OK
//process response
self.html(response.html); // work OK
self.append('<a href="javascript:;" id="linkDetail">View Detail</a>');
self.on('click','#linkDetail',function(){
//i make an ajax request here
methods.getDetail(function(response){
//failed!!
});
});
});
});
}
})(jQuery的);
我使用jsonp跨域发出请求。
它适用于Firefox,Chrome,IE7,8但在IE6上没有运气。
方法 getDetail 有问题,当我点击查看详情链接时,我收到了错误。
我尝试用Fiddler调试它,然后当我点击查看详细信息时我没有看到任何请求,但我仍然有错误?!
我无法解决这个问题,请有人帮助我!非常感谢你!
答案 0 :(得分:1)
我解决了这个问题!我只想与您分享这个提示。
在这样的锚点上触发事件点击时似乎有问题:
<a href="javascript:;" id="linkDetail">View Detail</a>
在这种情况下我使用event.preventDefault(),因此不会触发事件的默认操作。
self.on('click','#linkDetail',function(event){
event.preventDefault();
//i make an ajax request here
methods.getDetail(function(response){
//failed!!
});
});
然后在IE6中一切正常!