可以在EPUB中包含数据XML文件并使用jQuery和AJAX读取它吗?

时间:2013-01-05 00:26:31

标签: jquery xml-parsing epub

我目前正在为EPUB文件制作一个交互式HTML5小部件。我们通常使用jQuery来做这些事情。

如果我可以在EPUB清单中包含XML数据文件,然后使用标准的jQuery和AJAX方法从XML文件中读取我的小HTML5小部件,那么当前的项目会容易得多。

对于那些在EPUB文件中执行困难的Web应用程序,我已经完成了这一千次。

我的主要问题是:

1)这甚至可能吗?

2)在package.opf中声明数据XML文件时使用的媒体类型是什么?

我使用以下代码:

$.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中测试时,一切正常。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

人们不得不想知道使用像jQuery这样的大型库的重点在于EPUB,当jQuery的主要目的之一是跨浏览器兼容性时。我强烈建议使用标准的ECMA5 / XHTML5技术。

无论如何,当然你可以在EPUB中包含一个XML文件并阅读它。你有什么困难?显而易见的是检查路径。你确定它不应该是../data/text.xml吗?对于媒体类型,在其他条件相同的情况下,只需使用text/xmlapplication/xml即可。

请注意,即使读取成功,某些读者可能会因未知原因返回值0。这可能会诱使jQuery报告错误。但是您应该能够访问底层XMLHttpRequest对象的responseText或responseXml字段。

我使用以下代码,它可以正常工作:

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;
    };
}())
;