这是跨域问题吗?

时间:2011-02-08 22:38:50

标签: jquery ajax cross-domain

我有一个jQuery .ajax()调用,在IE 7和8中运行正常。它在FF或Chrome中不起作用。我认为这是一个跨域问题(因为它试图跨域调用)但我的同事说,如果它是一个跨域问题,它将无法在任何浏览器中工作。我对么?跨域问题是否可以在某些浏览器中出现而在其他浏览器中出现?有点新的东西......谢谢!

更新:这是我的代码,使用测试xml(与我尝试显示的属性不匹配,但我只是想了解我的ajax调用有什么问题):

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "http://www.w3schools.com/xml/note.xml",  //test xml
        dataType: "xml", 
        success: xmlParser,
        asynch: true
    });
});

function xmlParser(xml) {

   $(xml).find("Offer:lt(3)").each(function () {

        $("#offers").append('<img src="' + $(this).find("logophotoname").text() + '"/><h1>' + $(this).find("listTitle").text() + '</h1><p>' + $(this).find("keywords").text() + '</p>');

    });

}

2 个答案:

答案 0 :(得分:1)

你的同事是对的。它不应该在任何浏览器中工作。但是在IE 8中,Microsoft引入了另一个类似于XmlHttpRequest的对象 - &gt; XDomainRequest但我认为你没有使用它,否则IE 7会失败。 (more info here)

jQuery的ajax函数可用于使用JSONP进行跨域调用。然后它将在DOM树中注入一个脚本对象,而不是使用具有跨域限制的XmlHttpRequest对象。

(这篇文章仅与您的解释相关,如果您发布一些代码,它会有所帮助。也许还有其他原因可以在IE 7/8中运行)

答案 1 :(得分:0)

理论上你不能进行跨域调用,但如果你真的想要,有两种选择: 1.拥有基于服务器的代理脚本 2. JSONP