Почему этот Ajax работает в IE 7 и 8, но не в FF или Chrome? - PullRequest
0 голосов
/ 09 февраля 2011

Скажем, я использую следующий 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 ]

1 голос
/ 09 февраля 2011
    error: alert("We can't find your XML!"),

Интересно, если вы получите ошибку, потому что на самом деле это ошибка или вы неправильно понимаете лямбда-выражения. В строке, которую я указал, будет всегда всплывающее сообщение об ошибке.

    asynch: true

Вы также ошиблись async. Вам действительно нужно быть более осторожным с тем, что вы печатаете.

0 голосов
/ 09 февраля 2011

Вы делаете вызов AJAX от клиента на внешний домен (если вы не пишете код для www.w3schools.com.

Это может быть проблема SOP (Политика одинакового происхождения). Вы можете попробовать использовать JSONP (если их сервер настроен для этого), или вы можете переместить этот вызов на ваш сервер (PHP, C # и т. Д.) И сделать так, чтобы ваш сервер делал вызов от имени клиента.

Я предлагаю поискать "SOP" и "JSONP".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...