Javascript错误:函数XXXX()未定义

时间:2010-12-23 14:04:11

标签: javascript asp.net html

我在页面中添加了一个javascript函数

 <head>
    <script type=text/javascript>
        function show_Alert(error)
        {
           alert(error);
         }
    </script>
</head>

并点击按钮我正在执行此操作

Protected void btn_Click(object o,Eventargs e)
{
    StringBuilder str = new StringBuilder();
    str.AppendLine("show_Alert('XYZ error')");
    ClientScript.RegisterStartupScript(GetType(),"Alert",str.ToString(),true);
}

但它抛出JS错误show_Alert未定义:(

任何想法,这里有什么问题?

感谢名单

3 个答案:

答案 0 :(得分:4)

您的脚本标记错误 将其更改为

<script type="text/javascript">

但是,我认为这不是问题 我怀疑RegisterStartupScript在你的函数之前发出<script>块,所以它最终会在函数存在之前调用它。
检查每个<script>在渲染源中的位置。

答案 1 :(得分:2)

确保您的<script>元素有效,如下所示:

<head>
  <script type="text/javascript">
    function show_Alert(error)
    {
      alert(error);
    }
  </script>
</head>

如果格式不正确,或者type无法识别(你的案例同时存在),那么内部脚本将被忽略,因为浏览器不知道如何处理它。

答案 2 :(得分:0)

以下是一个例子:

<%@ Page Language="C#" %>
<script type="text/C#" runat="server">
    protected void BtnClick(object sender, EventArgs e)
    {
        var str = "XYZ Error";
        var script = new StringBuilder();
        script.AppendFormat("showAlert('{0}');",
            HttpUtility.JavaScriptStringEncode(str)
        );
        ClientScript.RegisterStartupScript(GetType(), "alert", script.ToString(), true);
    }
</script>
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
        function showAlert(error) {
            alert(error);
        }    
    </script>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:LinkButton ID="Btn" runat="server" Text="Click me" OnClick="BtnClick" />
    </form>
</body>
</html>

要注意的一件非常重要的事情是正确编码传递给showAlert函数的字符串。请注意它是encoded

script.AppendFormat("showAlert('{0}');",
    HttpUtility.JavaScriptStringEncode(str)
);

如果您不对其进行编码,并且该字符串包含一些特殊字符,例如',则您的脚本将会中断。