1

我有一些使用 jQuery 的 JavaScript,它使用快速$.get(url, function(response){ /* ... */});加载数据 数据是一个直接的文本文件,然后由该响应函数中的 JavaScript 处理。

这对我来说效果很好,但我刚刚在我的机器上遇到了这个问题:使用相同的代码,我现在收到一条错误消息:

XML 解析错误:格式不正确 位置:moz-nullprincipal:{74091275-3d54-4959-9613-5005459421ce} 第 1 行,第 16 列:image:tiles.png; ---------------^

如果我从另一台服务器加载它,它会完美运行。只有当我将它托管在我自己的 PC 上时,我才会收到此错误(请注意,它以前也可以在我自己的 PC 上完美运行,它正在运行 Ubuntu 并使用 Apache 为页面提供服务)。经过大量的头撞后,我发现如果我更改正在加载的文件名的扩展名,它就可以正常工作。该文件以前被命名为“test.sprite”,这就是我收到错误的时候。如果我将它重命名为“test.txt”,它加载得很好。

这个错误〜似乎〜与我系统最近的升级相吻合。我将 Ubuntu 10.something 升级到 12.04。我假设 Apache 配置中有某种更新,我没有注意到这导致它根据文件的扩展名发送不同的标头(这里命名的两个是相同的 - .txt 实际上只是一个.sprite 的符号链接)。

所以我有一个解决我眼前问题的方法,但我宁愿不屈服于系统的特性。知道如何在不重命名文件的情况下解决此问题吗?

4

2 回答 2

1

请注意,我不是 apache 专家,但我会为您指出正确的方向。

如果未定义,jQuery AJAX 函数将假定内容类型是 Apache 发回的任何标头。您可以通过在 Chrome 中运行代码、打开开发人员工具 (Ctrl + Shift + J) 并选择“网络”来非常简单地查看响应。单击相关请求后,您将看到返回的标题,包括内容类型。

在您的 Apache 配置中,可能未定义精灵的内容类型。您可以使用以下行添加它:

AddType 'text/plain; charset=UTF-8' .sprite

这应该在 Apache 解析的配置文件中 - 根据您的版本,这可能是 apache.conf、httpd.conf 或其他文件。

我希望这有助于或至少为您指明正确的方向。请记住在重新启动 Apache 之前进行配置测试!

于 2012-10-22T03:26:23.563 回答
0

检查响应头的内容类型,确保您从服务器和本地机器收到的头具有相同的内容类型,即相同的文件类型,相同的编码,如下所示:“content-type:text/ html; 字符集=UTF-8"。

于 2012-10-22T03:29:55.150 回答