jquery ajax请求跨域与jsonp在IE6中不起作用

时间:2012-01-31 09:05:17

标签: jquery cross-domain jsonp internet-explorer-6

我制作一个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调试它,然后当我点击查看详细信息时我没有看到任何请求,但我仍然有错误?!

我无法解决这个问题,请有人帮助我!非常感谢你!

1 个答案:

答案 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中一切正常!