Jquery web服务器如何检测响应文档的内容类型?

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?第一个文档是否格式良好等?分析错误可

我有两个相同的xhtml文档,分别是html(第1个)xhtml(第2个)扩展名。区别仅在于扩展

使用ajax(jQuery1.4.1)我试图获得1st,但web服务器(IIS5.1)发送的响应是
内容类型: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访问默认网站 管理单元:

  • 选择默认网站并打开 “属性”对话框
  • 选择HTTP标题选项卡
  • 在MIME映射下,单击文件类型 选项卡,然后选择新类型
  • 在扩展字段中键入.xml,然后 内容类型字段中的text/xml, 然后单击“确定”
  • 将XML MIME类型添加到给定计算机上运行的所有站点:

  • 选择Internet信息服务 并打开“属性”对话框 盒子

  • 在“计算机MIME映射”下,单击 编辑按钮并选择新类型

  • 在扩展字段中键入.xml,然后 内容类型字段中的text/xml, 然后单击“确定”

  • 任何其他扩展,如.xsl (可扩展样式表),可以是 使用相同的程序添加


    只需将
    .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"
      }
    });