代码之家  ›  专栏  ›  技术社区  ›  Chris

XML表达式中缺少

  •  0
  • Chris  · 技术社区  · 14 年前

    我有一个外部的javascript文件,在包含时,我想在网页的末尾写一些HTML。

    尽管我得到了错误 Missing } in XML expression 在使用的线路上 dropdownhtml .

    这是我的密码

    var dropdownhtml = '<div id="dropdown"></div>';
    
    $(document).ready(function(){
    
        //$(document).append(dropdownhtml);
        alert(dropdownhtml);
    });
    

    包含此文件的XHTML网页如下所示:

    <script type="text/javascript" src="/web/resources/js/dropdownmenu.js"></script>
    

    执行append或alert会引发相同的错误,发生了什么错误?

    4 回复  |  直到 12 年前
        1
  •  4
  •   T.J. Crowder    14 年前

    编辑 你的更新稍微改变了问题。-)

    引用的javascript或包含它的脚本标记没有任何错误,问题必须出现在页面的其他地方。

    陈旧的回答 :

    如果在XML文档中包含javascript,则 必须 把它包起来 CDATA 否则会遇到这样的问题,因为XML解析器既不知道也不关心您的javascript引号,而是看起来像标记(您的 <div> 在字符串中)。

    例如。:

    <foo>
    <bar><![CDATA[
        var dropdownhtml = '<div id="dropdown"></div>';
    
        $(document).ready(function(){
    
            //$(document).append(dropdownhtml);
            alert(dropdownhtml);
        });
    ]]></bar>
    </foo>
    

    当然,你需要确保 ]]> 序列不会出现在脚本的字符串(或注释等)中,但这很容易做到(例如: "Be sure to interrupt the end sequence with a harmless backslash like this: ]]\>; that escape just resolves to > anyway." )

        2
  •  6
  •   Flexo - Save the data dump sunny moon    12 年前

    我之所以出现此错误,是因为我在现有的javascript中调用了外部javascript,结果是:

    <script type="text/javascript">
    <script type="text/javascript">
    code
    </script>
    
    code
    </script>
    
        3
  •  1
  •   ridecar2    14 年前

    肯定有人失踪了 ); 在代码示例的末尾。但不要去可能有失踪的地方。

        4
  •  1
  •   julia    12 年前

    我的页面上有空脚本

    <script src=""></script>
    

    这就导致了这样的错误