【问题标题】:jQuery ajax request causes 'not well-formed' error in FirefoxjQuery ajax 请求在 Firefox 中导致“格式不正确”错误
【发布时间】:2012-04-17 07:08:01
【问题描述】:

尝试使用 jQuery 动态加载 Javascript 文件时,我不断收到“格式不正确”的错误消息。我在这里找到了有类似问题的人,但尚未看到提供的解决方案。

我的主要脚本使用:

$.ajax({
    url: 'test.js',
    dataType: 'script',
    cache: true,
    success: loadScriptReturn
});

function loadScriptReturn() { }

我的最简单形式的动态加载脚本 (test.js):

alert('Hello World.');

由于我专门将它作为脚本 MIME 类型加载,它消除了 Firefox 对正在拉入的文件类型感到困惑的可能性。有没有办法解决这个问题?或者,有没有办法关闭 Firefox 中的这个特定错误? (注意:这是一个错误,而不是警告,这非常烦人,因为我确实希望看到后续的错误消息——在 Firefox 上不好,因为这应该是警告,而不是错误)

请记住,此示例有效,但仍会产生错误。考虑到我需要动态加载多少脚本,如果我找不到解决此问题的方法,那么尝试对“真实”错误消息进行排序将会很乏味。

提前感谢贡献者!

【问题讨论】:

  • 我怀疑这是 Firefox 给你的信息。更有可能是 Firebug。
  • 是的,可能是 Firebug - 此外,你不应该使用 ajax() 来获取 JS 脚本 - 你应该使用 getScript() api.jquery.com/jQuery.getScript - 虽然一个是另一个的简写,但它是更清晰。
  • 还要检查您的编码。如果您使用的是 UTF-8,请确保您没有使用 BOM,因为这可能会引起各种麻烦。
  • 你是对的,Firebug 错误,但我确实找到了解决方案(请参阅下面的评论)......感谢大家对此进行检查。我昨天花了 3-4 个小时,今天花了 1-2 个小时试图解决这个问题。原来只有在本地使用 Ajax 时才会抛出这个问题;远程:没有错误。

标签: javascript jquery firefox non-well-formed


【解决方案1】:

我发现了几个可能对您有帮助的问题:

普遍的共识是你需要将MIME类型改为application/json

【讨论】:

  • 此错误信息仅在动态加载脚本时在本地抛出。在您开始在远程服务器上工作的那一刻,错误消息不会出现。据我所知,Firefox 在加载本地文件时看不到 MIME(错误?)。如果您是收到相同错误消息的人,请尝试将所有文​​件上传到远程服务器以查看它是否消失...我花了 3-4 小时尝试诊断问题...希望这可以节省其他人一段时间。
【解决方案2】:

动态加载脚本的更好方法:

$('head').append('<script type="text/javascript" src="test.js"></script>');

【讨论】:

  • 我试过你的代码(顺便谢谢你),但我仍然收到同样的错误信息。不过有趣的是,我在尝试您的代码时找到了解决方案。
  • 此错误信息仅在动态加载脚本时在本地抛出。在您开始在远程服务器上工作的那一刻,错误消息不会出现。据我所知,Firefox 在加载本地文件时看不到 MIME(错误?)。如果您是收到相同错误消息的人,请尝试将所有文​​件上传到远程服务器以查看它是否消失...我花了 3-4 小时尝试诊断问题...希望这可以节省其他人一段时间。
  • 请确定,尝试用 // 包装你的 js 文件,我认为这可能会修复错误!
猜你喜欢
  • 2015-05-26
  • 2015-09-05
  • 2021-12-11
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 2016-04-08
相关资源
最近更新 更多