XML不能是整个程序

时间:2011-04-19 13:37:46

标签: javascript jquery

当我包含以下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())
  });

提前致谢!

6 个答案:

答案 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; 而非使用&amp;

答案 4 :(得分:0)

从臀部拍摄:我实际上遇到了这个错误,因为我在IIS 5.1 / WinXP中添加了aspnet_isapi.dll的通配符映射(用于某些与MVC相关的工作)。这意味着.js文件由IIS以不同方式处理。删除映射后,您描述的错误消失了。

答案 5 :(得分:0)

刚出现同样的错误。确保javascript包含文件不包含&lt;脚本&GT;标签。一旦将这些文件从您的包含文件中取出,错误就会消失(假设这一切都是错误的)。