当我包含以下js文件(其中包含jquery)时,我在Firebug中收到错误“XML不能是整个程序”
JS文件包含参考:
<script src="~/Scripts/scriptname.js" type="text/javascript"></script>
JS文件内容:
$("[id*='txtAddress1S']")
.blur(function(){
$("[id*='txtAddress1S']")
.val().match(
/\b[p]*(ost)*\.*\s*[o|0]*(ffice)*\.*\s*b[o|0]x\b/i)&&
(alert("Packages are not deliverable to a Post Office Box.
\nPlease provide a different shipping address."),
$("[id*='txtAddress1S']").focus())
});
提前致谢!
答案 0 :(得分:10)
可能是您的脚本src
属性未被~
正确理解,而是被解析为空<script>
标记。使用javascript文件的完整路径,或相对于其加载的页面的路径:
<script src="/full/path/to/Scripts/scriptname.js" type="text/javascript"></script>
<script src="../relative/to/Scripts/scriptname.js" type="text/javascript"></script>
答案 1 :(得分:4)
出于某种原因,您的脚本文件被Firefox视为XML文件。我的猜测是你在Javascript文件中包含了script
个标签。 E.g。
<script>
$("[id*='txtAddress1S']").blur(function(){$("[id*='txtAddress1S']").val().match(/\b[p]*(ost)*\.*\s*[o|0]*(ffice)*\.*\s*b[o|0]x\b/i)&&(alert("Packages are not deliverable to a Post Office Box.\nPlease provide a different shipping address."),$("[id*='txtAddress1S']").focus())});
</script>
外部JS文件中不需要script
个标记。
Chrome中的等效错误是
未捕获的SyntaxError:意外的标记&lt;
答案 2 :(得分:1)
我在FF中找到了"XML can't be the whole program
的另一个原因,在Chrome中找到了Uncaught SyntaxError: Unexpected token <
。在我的情况下,一切都失败了ScriptResource.axd
。
原因是我正在从https提供一些页面,我有一个经理在http和https请求之间切换,具体取决于当前需要的内容。由于配置不正确,管理器始终通过http服务ScriptResource.axd,这导致https页面出错。
答案 3 :(得分:1)
我今天遇到了同样的错误。在我的情况下,这是因为我在执行AJAX请求时没有在我的URL中使用HTML代码来表示特殊字符。例如......
使用 &
而非使用&amp;
答案 4 :(得分:0)
从臀部拍摄:我实际上遇到了这个错误,因为我在IIS 5.1 / WinXP中添加了aspnet_isapi.dll的通配符映射(用于某些与MVC相关的工作)。这意味着.js文件由IIS以不同方式处理。删除映射后,您描述的错误消失了。
答案 5 :(得分:0)
刚出现同样的错误。确保javascript包含文件不包含&lt;脚本&GT;标签。一旦将这些文件从您的包含文件中取出,错误就会消失(假设这一切都是错误的)。