为什么jQuery坚持我的纯文本不是"格式良好"?

Jam*_*sen 7 ajax jquery

我正在进行AJAX调用以检索一些纯文本:

$.ajax({
  url:         "programData.txt",
  type:        "GET",
  dataType:    "text",
  cache:       false,
  success:     processData
});
Run Code Online (Sandbox Code Playgroud)

但是,当我提出请求时,我收到以下错误:

错误:格式不正确源文件:file:///projects/foo/programData.txt?_ = 1259694590361行:1,列:2

为什么jQuery试图处理我的纯文本以及如何让它停止?

stu*_*eek 13

Firefox试图将该文件解析为HTML,然后再将其交还给jQuery.

有几个原因导致它可能尝试这样做.如果,正如Jaanus建议的那样,您使用的是file://或chrome:// URL,那么它没有MIME类型,并且它采用HTML.或者您的HTTP服务器可能返回错误的MIME类型.

从jQuery 1.5.1开始,有一个mimeType选项可以覆盖Firefox看到的返回的MIME类型.所以你可以做到以下几点:

$.ajax({
  mimeType: 'text/plain; charset=x-user-defined',
  url:         "programData.txt",
  type:        "GET",
  dataType:    "text",
  cache:       false,
  success:     processData
});
Run Code Online (Sandbox Code Playgroud)

Doc on mimeType选项位于 http://api.jquery.com/jQuery.ajax/

这里是什么在Firefox的水平是怎么回事一些背景: https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Receiving_binary_data


Jaa*_*nus 11

您是通过HTTP在浏览器中加载页面还是仅将其作为常规文件打开?运行javascript的页面地址是以http:还是file:?开头的?我怀疑它是后者,并且在这种情况下Ajax调用的工作方式不同(参见下面的tvanfonsson的回复).如果您正在构建将在以后通过HTTP提供的Web应用程序,请尝试使用本地HTTP服务器运行您的页面.