2010-12-23 129 views
1

我在一个页面中增加了一个JavaScript函数JavaScript错误:函数XXXX()没有定义

<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不定义:(

什么想法,有什么错在这里?

感谢名单

+0

对不起,这是不是一个问题,我正在编辑问题 – BreakHead 2010-12-23 14:07:47

回答

4

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

<script type="text/javascript"> 

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

+0

SLak RegisterStartupScript创建新的

2

确保您<script>元素是有效的,就像这样:

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

如果它不能很好地形成,或者type是无法识别的(你的情况有两种),那么里面的脚本将被忽略,因为浏览器不知道如何处理它。

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) 
); 

如果不对其进行编码,并且该字符串包含一些特殊的字符,如'例如,你的脚本将打破。