跨域调用无法在FireFox和Chrome中运行

时间:2010-11-16 11:00:07

标签: asp.net jquery asp.net-mvc-2 jquery-ui

我正在使用jquery向不同服务器发出异步请求以获取某些数据。它在IE中工作正常,但在FireFox和Chrome中不起作用,当它到达对其他服务器发出请求的代码时,它会冻结并显示空白页面。如果我删除那段代码,ajax工作正常。

另外,当我在document.ready上放置一个断点时,在使用IE调试时会遇到断点,但在使用FireFox进行调试时它没有被击中。

以下是我正在使用的JQuery

jQuery(document).ready(function ($) {

    $('.tabs a, .tabs span').livequery('click', function () {

        var currentTab = $(this).parents('li:first');

        if (!currentTab.is('.active')) {
            var currentContent = $('.tab_container .' + currentTab.attr('class'));

            $('.tabs li').removeClass("active");
            currentTab.addClass("active");
            var url = $(this).attr("href");

            var newContent = "";
            if (currentContent.length == 0) {
                $.get(url, {}, function (result) {
                    $('#tabs.tab_container div:visible').fadeOut(100, function () {
                        $('#tabs.tab_container')
                        .html(result)
                        .fadeIn(100);
                    });

                }, 'html');
            }
            else {
                $('#tabs.tab_container div:visible').fadeOut(100, function () {
                    currentContent.fadeIn(100);
                });
            }
        }
        return false;
    });
});

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

根据jQuery.Get的文档:

  

由于浏览器安全限制,大多数“Ajax”请求都受same origin policy的约束;请求无法成功从其他域,子域或协议中检索数据。

如果你正在使用JSON响应,那么你应该考虑使用已经归入GetJSON method的JSONP选项。

但是有几个人为Get限制提供了一些解决方法: