Можно ли включить XML-файл данных в EPUB и прочитать его с помощью jQuery и AJAX?

В настоящее время я работаю над интерактивным виджетом HTML5 для файла EPUB. Обычно для этих целей мы используем jQuery.

Текущий проект был бы намного проще, если бы я мог включить файл данных XML в манифест EPUB, а затем заставить мой маленький виджет HTML5 считывать данные из файла XML, используя стандартные методы jQuery и AJAX.

Я делал это тысячу раз для веб-приложений, просто мне было трудно сделать это внутри файла EPUB.

Мои основные вопросы:

1) Это вообще возможно?

2) Какой тип носителя следует использовать при объявлении XML-файла данных в package.opf?

Я использую следующий код:

$.ajax({
    type: "GET",
    async: false,
    cache: false,
    url: "data/test.xml",
    dataType: "xml",
    error: function() {
        alert("ERROR: The table data could not be read...");
    },
    success: function(objFileContents) {
        alert("SUCCESS");
    }
);

Предупреждение об ошибке продолжает отображаться, когда я тестирую в iBooks. Но все работает нормально, когда я тестирую в Safari на своем рабочем столе.

Любая помощь приветствуется.

Спасибо!


person Mark    schedule 05.01.2013    source источник
comment
и ответы здесь ответили на ваш вопрос или нет, и вы не ответили на них или не приняли их, потому что...???   -  person    schedule 26.01.2013


Ответы (1)


Нужно задаться вопросом, какой смысл использовать огромную библиотеку, такую ​​​​как jQuery, внутри EPUB, когда одной из основных целей jQuery является кросс-браузерная совместимость. Я настоятельно рекомендую использовать стандартные методы ECMA5/XHTML5.

В любом случае, конечно, вы можете включить файл XML в EPUB и прочитать его. Какие трудности у вас возникают? Очевидная вещь - проверить путь. Вы уверены, что это не должно быть, например, ../data/text.xml? Для типа носителя, при прочих равных, просто используйте text/xml или application/xml.

Обратите внимание, что некоторые программы чтения могут возвращать значение 0 по неизвестным причинам, даже если чтение было успешным. Это может заставить jQuery сообщить об ошибке. Но у вас должна быть возможность доступа к полю responseText или responseXml базового объекта XMLHttpRequest.

Я использую следующий код, и он отлично работает:

read=(function(){
    var r=new XMLHttpRequest();
    return function(src){
        r.open('GET', src, false);
        r.send();
        if(r.status!=200 && r.status!=0){//E-books return 0 for some reason?
            //REPORT ERROR
            return null;
        }
        return r.responseText;
    };
}())
;
person Community    schedule 05.01.2013
comment
Извините за запоздалый ответ. Да, это сработало и для меня. Это должно быть что-то в реализации jQuery ajax, что не нравится epub. Спасибо! - person Mark; 24.02.2013