...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)

转载 2012年12月16日 20:55:38

通常javascript代码可以与HTML标签一起直接放在前端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因 为页面因此而变得臃肿;所以一般有良好开发习惯的程序员都会把javascript代码放到独立的js文件中,其他页面通过引入该js文件来使用相应的 javascript代码。
 
今天在做一个小新闻系统的管理页面时因为图方便,刚开始所有用到的自定义javascript函数都放在了 admin.aspx页面中,功能实现后为了让前端页面显示简洁规范些,我把所有自定义的javascript函数都放到admin.js文件里了,然后 在admin.aspx页面中通过<link href="script/admin.js" type="text/javascript" />引入该js文件。接着问题出现了,里面定义的函数有的调用正常,有的却出错了,提示缺少对象。如果是文件路径不对应该所有脚本函数都不能调用才 对;但如果路径正确的话为什么有的函数可以正常调用有的却不能呢?不解!
 
接着上网查了一下,有人也遇到这种情况在CSDN中发贴提问,不过 似乎也没解决;然后尝试用另一种方法引用JS文件:<script src="script/admin.js" type="text/javascript"></script>。再运行,所有脚本函数调用正常,看来问题是出现在调用方式上。那 究竟javascript的各种引入方式有什么区别呢?下面让十万个为什么 为大家总结一下:
 
ASP.NET本身就提供了多种调用javascript脚本的方法,笔者在这里总结了六种调用方法,大家可以根据自己的使用习惯选择相应的调用方式了!
 
1、直接在前台页面调用自定义的javascript 函数:

很简单,在 head 元素之间加入 script 元素,将 type 元素设置为 " text/javascript "
 
如:
 
<head runat="server">
<script type="text/javascript" >
function ShowName(str)
{
alert("十万个为什么的站长是:("+str+")");
}
</script>
<title>using javascript</title>
</head>
 
之后在body 元素间,通过事件来访问,比如要通过button1 的单击事件(onclientclick)来访问 javascript 函数的ShwoName()的示例如下:
 
<asp:Button ID="Button1" runat="server" Text="Button" onclientclick="ShowName('伍锐锋')" />
 
这时运行项目,单击 button时,会显示"十万个为什么 ,的站长是:伍锐锋"
这就是在前端页面直接定义及调用javascript函数.
 
2、在前台通过引入js文件来调用相应的函数:

方法与(1)一样,只不过需要指定要调用的js 文件
 
示例如下:
 
<head runat="server">
<script type="text/javascript" src="kenscript.js">
</script>
<title>using javascript</title>
</head>
 
之后在body 元素间,通过事件来访问, 比如要通过button1 的单击事件(onclientclick)来访问 javascript 函数的示例如下:
 
//此时 .js文件中必须有 ShowName 方法
 
<asp:Button ID="Button1" runat="server" Text="Button" onclientclick="ShowName('伍锐锋')" />
 
3、在后台调用 javascript 函数,函数在.js文件中

前台的head 元素
 
<head runat="server">
<script type="text/javascript" src="kenscript.js">
</script>
<title>using javascript</title>
</head>
 
后台的需要添加如下代码
 
Button1.Attributes.Add("onclick", "showname1(‘伍锐锋’)");
 
4、在后台调用 javascript 函数,函数写在对应的js文件中,但并没有在前台定义,示例如下:

//获得.js文件
 
string myscript = "kenscript.js";
 
//注册.js文件
 
Page.ClientScript.RegisterClientScriptInclude("myKey", myscript);
 
 如果此时查看源码,会得到如下代码
 
//<script src ="kenscript.js" type="text/javascript"><script>
 
//同上
Button1.Attributes.Add("onclick", "showname1('伍锐锋')");
 
5. 用Response.Write方法写入脚本

比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上
Response.Write("<script type='text/javascript'>alert("操作完成!");</script>");
 
不 过呢,这个方法有个缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定 义,比如Response.Write("<script type='text/javascript'>function myfun(){...}</script>");
 
6.用ClientScript类动态添加脚本

用法如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。
 
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");
 
这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数,不过跟前面几种相比没那么简洁直观。
 
注意,以上所有方法中,后台代码都不能有转化当前页的代码,比如Redirect等,要把转页代码放在脚本里面.
  本文始发于十万个为什么 ,作者伍锐锋,转载请注明出处并带上本链接.

注意一个问题:在JS文件中不能出现<script></script>标签!!!!!!!!!!!!!!!!!!!!!!!!

按钮事件中调用JS文件中函数:

.ASPX文件中要添加对JS文件引用:(示例中是JScript.js文件,在js文件夹下,注意路径问题)

<script src="js/JScript.js" type="text/javascript" ></script>

protected void Page_Load中添加代码:

按钮ID.Attributes.Add("OnClick", "JS中的函数");//在页面初次加载时给按钮加上这个事件
在按钮事件中可以添加其他想要实现的功能:

protected void 按钮ID_Click(object sender, EventArgs e)//按钮单击事件
    {
        Label1.Text=TextBox1.Text.ToString();

    }

单击按钮后的响应顺序为:1、在页面加载时添加的按钮事件   2、原来按钮事件

ASP.NET中JavaScript 调用后台代码

前序:在不需要右击页面或回发的情况下刷新页面,即JS调用后台代码; 方法一:调用隐藏服务端按钮的点击事件        1、在前端放一个隐藏按钮,将需要调用的后台代码写入OnClick事件中;  ...
  • rosefly110
  • rosefly110
  • 2015年02月12日 18:06
  • 1418

C#前台js调用后台代码

C#前台js调用后台代码 前台js   function Ceshi()   {     var a = "";     alert(a);   } 后台代码 public string Ge...
  • a6225301
  • a6225301
  • 2014年02月26日 12:36
  • 9426

asp.net服务器控件button先执行js再执行后台的方法

关于button这个服务器控件,我一直想减少它向服务器提交数据。那些检测,还是在客户端实现就好了。 这就需要javascript,但是我发现仅仅有javascript还是不够的。button服务器控...
  • SJF0115
  • SJF0115
  • 2014年04月08日 22:26
  • 16962

asp.net中前台JavaScript库调用后台C#变量和有参函数方法

最近在做项目时,遇到了js库里调用后台的变量和函数的问题,一开始不知道咋办,google了很多。 1.封装成JavaScript库,其中调用后台C#变量:      网上有三种基本方法:  方法一:1...
  • zhoulei13572468
  • zhoulei13572468
  • 2016年05月31日 11:29
  • 516

ASP.NET后台中调用前台Javascript函数的几种方法

做web开发,用的技术是aspx.net,可是由于比较习惯于ASP现在做起来,觉得非常别扭,原因在于有很多功能其实在前台可以处理的,但是因为用到了很多webcontrol,导致不断postback。如...
  • lala515
  • lala515
  • 2011年07月26日 09:49
  • 758

ASP.NET后台中调用前台Javascript函数的几种方法

做web开发,用的技术是aspx.net,可是由于比较习惯于ASP现在做起来,觉得非常别扭,原因在于有很多功能其实在前台可以处理的,但是因为用到了很多webcontrol,导致不断postback。如...
  • u010724686
  • u010724686
  • 2013年07月18日 19:46
  • 388

ASP.NET前台JS与后台CS函数如何互相调用

在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况。今天就把比较实用的前后台相互调用的方法总结出来和大家分享。 后台代码调用前台JS代码 一、说到后台代码调...
  • skyandcode
  • skyandcode
  • 2013年07月06日 18:12
  • 22532

ASP.NET前台JS与后台CS函数如何互相调用

在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况。今天就把比较实用的前后台相互调用的方法总结出来和大家分享。 后台代码调用前台JS代码 一、说到后台代码调...
  • ht_gaogao
  • ht_gaogao
  • 2013年10月25日 00:11
  • 338

ASP.NET前台JS与后台CS函数如何互相调用

在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况。今天就把比较实用的前后台相互调用的方法总结出来和大家分享。 后台代码调用前台JS代码 一、说到后...
  • u014023256
  • u014023256
  • 2014年04月01日 15:09
  • 264

javascript与cs代码互相调用 asp.net中前台javascript与后台C#交互 这里主要包括了javascipt与后台CS代码四种方法互调(其中包括函数与变量的访问)

这里主要包括了javascipt与后台CS代码四种方法互调(其中包括函数与变量的访问)。   1.JavaScript访问C#函数    javaScript函数中执行C#代码中的函数: ...
  • hxkjnet360
  • hxkjnet360
  • 2012年08月29日 13:35
  • 1140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
举报原因:
原因补充:

(最多只允许输入30个字)