Jquery web服务器如何检测响应文档的内容类型?
我有两个相同的xhtml文档,分别是html(第1个)和xhtml(第2个)扩展名。区别仅在于扩展 使用ajax(jQuery1.4.1)我试图获得1st,但web服务器(IIS5.1)发送的响应是Jquery web服务器如何检测响应文档的内容类型?,jquery,ajax,xhtml,content-type,Jquery,Ajax,Xhtml,Content Type,我有两个相同的xhtml文档,分别是html(第1个)和xhtml(第2个)扩展名。区别仅在于扩展 使用ajax(jQuery1.4.1)我试图获得1st,但web服务器(IIS5.1)发送的响应是内容类型:text/html,而不是应用程序/xhtml+xml。如果我尝试获得第二名,就没有问题了 对于这两个文档,我都使用了$.ajax({…}),但是我在1st中得到了一个错误(在注释中): --- 如何让[任何]web服务器认为1st文档是真正的xhtml?第一个文档是否格式良好等?分析错误可
内容类型:text/html
,而不是应用程序/xhtml+xml
。如果我尝试获得第二名,就没有问题了
对于这两个文档,我都使用了$.ajax({…}),但是我在1st中得到了一个错误(在注释中):
---
如何让[任何]web服务器认为1st文档是真正的xhtml?第一个文档是否格式良好等?分析错误可能表示xml无效。AFAIK IIS使用文件扩展名检测内容类型。您可以在IIS配置页面中看到MIME类型映射 如何让[任何]web服务器思考 第一个文档是真正的xhtml吗 从javascript来看,答案是:你不能。Web服务器决定发送何种内容类型 如果您控制服务器: 您可以配置IIS以发送正确的内容类型 如果您不控制服务器:除了使用服务器端脚本获取页面并发送正确的页眉之外,您没有什么可做的 如何在IIS 5.0中添加内容类型(从): 将MIME类型添加到IIS 5.0 可以在IIS中注册MIME类型 5.0使用IIS管理单元 例如,要添加XML MIME类型 使用IIS访问默认网站 管理单元:
只需将
.xml
和text/html
更改为所需的扩展/内容类型我只想获得application/xhtml+xml
。在处理成功之前,是否可以在jQuery中做些什么来欺骗头部?这个错误可能是XmlHttpRequest抛出的,所以我认为这是不可行的。我建议您使用正确的扩展名,或者添加一个将.html
映射到应用程序/xhtml+xml
的自定义规则谢谢您的建议,如果我有权访问web服务器,我将映射其余类型文件的扩展名。这是一个想法,但我猜问题出在jQuery的某个地方。服务器不仅可以是IIS。MIME类型映射是特定于服务器的。我不知道其他服务器如何检测MIME类型请注意,我们这里有两个不同的问题。服务器内容类型自动检测本身就是一个有趣的主题,但您的应用程序不应该依赖它。
$.ajax({
url: url,
dataType: 'xml',
contentType: 'application/xhtml+xml',
success: function(data, ts, theXhr) { ... },
error: function(XMLHttpRequest, textStatus, errorThrown) {
// textStatus = "parsererror"
// errorThrown.lineNumber = 5193
// errorThrown.message = "data is null"
// errorThrown.name = "TypeError"
}
});