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

Javascript错误:未定义函数XXXX(),javascript,asp.net,html,Javascript,Asp.net,Html,我在页面中添加了一个javascript函数 <head> <script type=text/javascript> function show_Alert(error) { alert(error); } </script> </head> 但它抛出JS错误,显示未定义警告:( 知道吗,这里怎么了 Thanx您的脚本标记错误。 换成 <script

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

 <head>
    <script type=text/javascript>
        function show_Alert(error)
        {
           alert(error);
         }
    </script>
</head>
但它抛出JS错误,显示未定义警告:(

知道吗,这里怎么了


Thanx

您的脚本标记错误。
换成

<script type="text/javascript">


然而,我认为这不是问题所在。
我怀疑RegisterStartupScript在包含函数的块之前发出了它的
块,因此它最终在函数存在之前调用了该函数。

检查每个
在渲染源中的位置。

您的脚本标记错误。
换成

<script type="text/javascript">


然而,我认为这不是问题所在。
我怀疑RegisterStartupScript在包含函数的块之前发出了它的
块,因此它最终在函数存在之前调用了该函数。
检查每个
在渲染源中的位置。

确保
元素有效,如下所示:

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

功能显示警告(错误)
{
警报(错误);
}
如果格式不正确,或者无法识别
类型
(您的案例两者都有),则将忽略其中的脚本,因为浏览器不知道如何处理它。

请确保
元素有效,如下所示:

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

功能显示警告(错误)
{
警报(错误);
}
如果格式不正确,或者
类型无法识别(您的案例中同时包含这两种类型),则将忽略其中的脚本,因为浏览器不知道如何处理它。

以下是一个示例:

<%@ 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>
如果不进行编码,并且字符串包含一些特殊字符,例如
,则脚本将中断。

以下是一个示例:

<%@ 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>

如果您不编码它,并且字符串包含一些特殊字符,例如
,您的脚本将中断。

对不起,这不是问题,我正在编辑问题对不起,这不是问题,我正在编辑问题Slaks RegisterStartupScript创建新块,而不是在头中。我认为这是问题。如果它在
之后>
,这不应该是个问题。在每个脚本的开头放置一个普通的
警报()
调用,并检查它们的警报顺序Slaks RegisterStartupScript创建新的块而不是在头中。我认为这是个问题。如果它在
之后,则不应该是个问题。放置一个普通的
警报()
在每个脚本的开头调用并检查它们的警报顺序HttpUtility没有任何JavaScriptStringEncode选项:(@BreakHead,是的,这是.NET 4.0。您可以使用
new JavaScriptSerializer().Serialize(str)
在旧版本的.NET.HttpUtility中作为等价物没有任何JavaScriptStringEncode选项:(@BreakHead,是的,这是.NET 4.0。您可以在旧版本的.NET中使用
新的JavaScriptSerializer().Serialize(str)
作为等价物。