Сбой Ajax-запроса, только в Safari, только при кэшировании XML - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь написать веб-приложение, которое выглядит как приложение для iPad, с возможностью автономного использования. Для этого я даю указание браузеру кэшировать мои файлы с помощью манифеста и т. Д. Когда я пытаюсь настроить AXAX для XML, он работает в первый раз, но в следующий раз не работает. Забавно то, что это «не получается», но xhr.responseXML - это правильно!

Это проблема только в Safari, будь то в Windows или на iPad. Проблема проявляется только при загрузке из кеша, все работает нормально с первого раза.

thrownError равно "", xhr.status равно 0, xhr.statusText равно "error".

$.ajax({
    type: "GET",
    url: "data.xml",
    dataType: "xml",
    success: function(xml) {
        do_stuff(xml);
    },

    error: function (xhr, ajaxOptions, thrownError) {
        do_stuff(xhr.responseXML); // Why does this work?
    }
});

Есть идеи? Я думаю, что xml загружается с неправильным типом MIME?

1 Ответ

0 голосов
/ 27 мая 2011

Когда ваша страница изначально загружается, data.xml еще не находится в кэше, поэтому вызов ajax направляется непосредственно на сервер.Поскольку у вас есть URL-адрес для запроса xhr, указанный в манифесте кэша, ваш браузер сделает запрос не xhr и сохранит его в кэше.Последующие загрузки страницы будут загружаться из кэша и возвращать не-xhr запрос.

Убедитесь, что вы можете получить доступ к data.xml как не-xhr запрос и что он содержит данные, которые вы хотите отобразить.

...