如何使用jQuery从Internet Explorer中的本地XML文件中查询XML元素?
我正在构建一个用于触摸屏信息亭的HTML页面。我有一个名为data.XML的外部XML文件,它与我的HTML页面位于同一目录中。我能够使用jQuery加载外部XML文件,解析它,并在页面加载上动态构建一些HTML,而Firefox和Chrome中没有任何问题。但后来我在Internet Explorer中尝试了它 使用$.ajax函数可以很好地加载XML文档。我做了一个alertxmlDoc.text,它显示了XML文档的所有文本内容。所以这不是问题所在 我做了一些搜索并找到了一个解决方案,如果您是从web服务器提供XML的话。它基本上表示,为了让InternetExplorer将xml字符串视为xml,需要以下HTTP头 内容类型:application/xml;字符集=utf-8 此HTML页面只需在Internet Explorer中作为独立页面运行即可。我们不会在kiosk机器上运行web服务器 我的问题是,在jQuery中加载本地资源时,是否有任何方法可以指定正确的内容类型 下面是我正在使用的相关ajax代码如何使用jQuery从Internet Explorer中的本地XML文件中查询XML元素?,jquery,xml,internet-explorer,Jquery,Xml,Internet Explorer,我正在构建一个用于触摸屏信息亭的HTML页面。我有一个名为data.XML的外部XML文件,它与我的HTML页面位于同一目录中。我能够使用jQuery加载外部XML文件,解析它,并在页面加载上动态构建一些HTML,而Firefox和Chrome中没有任何问题。但后来我在Internet Explorer中尝试了它 使用$.ajax函数可以很好地加载XML文档。我做了一个alertxmlDoc.text,它显示了XML文档的所有文本内容。所以这不是问题所在 我做了一些搜索并找到了一个解决方案,如果
$.ajax({
url: 'data.xml',
async : false,
success : function(response) {
xml = $(response);
}
});
// Following line works in Firefox/Chrome, but not in Internet Explorer
var firstItemText = $("item:first", xml).text();
编辑:我在ajax请求中添加了一个错误处理函数,如下所示
此函数在Internet Explorer中启动,结果消息为:
无法加载数据:-parsererror
我用几个在线XML验证工具检查了我的XML文档,它没有错误
感谢您的帮助。尝试将您的内容类型更改为: content-type:text/xml;charset=utf-8 别忘了在XML文件中添加这一行,它必须是第一行
<?xml version="1.0" encoding="utf-8"?>
尝试将内容类型更改为: content-type:text/xml;charset=utf-8 别忘了在XML文件中添加这一行,它必须是第一行
<?xml version="1.0" encoding="utf-8"?>
经过一些测试,我设法使它工作 问题是,当您在本地加载XML文件时,Internet Explorer接收的数据是纯文本,而不是text/XML 解决办法是:
$.ajax({
url: 'data.xml',
async : false,
dataType: ($.browser.msie) ? "text" : "xml",
success : function(response)
{
if (typeof response == "string")
{
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(response);
}
else
xml = $(response);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert('Data Could Not Be Loaded - '+ textStatus);
}
});
var firstItemText = $("item:first", xml).text();
您可以在此链接中看到完整的说明:
如果我能帮上忙,我很高兴。经过一些测试,我成功地使它工作了 问题是,当您在本地加载XML文件时,Internet Explorer接收的数据是纯文本,而不是text/XML 解决办法是:
$.ajax({
url: 'data.xml',
async : false,
dataType: ($.browser.msie) ? "text" : "xml",
success : function(response)
{
if (typeof response == "string")
{
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(response);
}
else
xml = $(response);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert('Data Could Not Be Loaded - '+ textStatus);
}
});
var firstItemText = $("item:first", xml).text();
您可以在此链接中看到完整的说明:
如果我能帮忙,我很高兴。您建议我在哪里更改内容类型?我不是从web服务器提供XML文件。我将尝试XML声明。我添加了XML声明,得到了相同的结果。您建议我在哪里更改内容类型?我不是从web服务器提供XML文件。我将尝试XML声明。我添加了XML声明,得到了相同的结果。这一针见血!谢谢菲利普!那一针见血!谢谢菲利普!