为什么这个Ajax在IE 7和8中工作但不在FF或Chrome中工作?

时间:2011-02-09 20:41:22

标签: jquery ajax

假设我正在使用以下Ajax调用:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "http://www.w3schools.com/xml/cd_catalog.xml",  //test xml
        dataType: "xml", 
        success: xmlParser,
        error: alert("We can't find your XML!"),
        asynch: true
    });
});

function xmlParser(xml) {

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

        $("#offers").append('<h1>' + $(this).find("ARTIST").text() + '</h1><p>' + $(this).find("YEAR").text() + '</p>');

    });

这在IE 7和8中运行良好,但在FF或Chrome中不起作用。我得到一个空的XML文件,并在这些浏览器中出现以下错误:

  

XML解析错误:未找到任何元素   地点:   MOZ-nullprincipal:{77f5fd10-d793-4d35-9a4b-b8280b704fba}   第1行,第1列:

当我搜索错误时,我认为这是由于Ajax跨域问题。但如果是这种情况,不会在所有浏览器中禁用它吗?任何帮助都表示赞赏 - 我对这整个Ajax事物都是新手。

谢谢!

2 个答案:

答案 0 :(得分:1)

    error: alert("We can't find your XML!"),

我想知道你是否收到错误,因为实际上有错误或因为你误解了lambda表达式。我引用的行始终会弹出错误消息。

    asynch: true

你也拼错了async。你真的需要对你输入的内容更加小心。

答案 1 :(得分:0)

您正在从客户端向外部域进行AJAX调用(除非您为www.w3schools.com编写代码。

这可能是SOP(同源政策)问题。您可以尝试使用JSONP(如果他们的服务器已设置),或者您可以将该调用移动到您的服务器(PHP,C#等等)并让您的服务器代表客户端进行调用。

我建议谷歌搜索“SOP”和“JSONP”。