js前台与后台数据交互
客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本
用途
何时使用服务器代码向页中添加客户端脚本:
u 当客户端脚本的内容依赖于直到运行时才可用的信息时
u 当您希望客户端脚本在当页已完成加载或当用户提交页时执行
方法
(一)用Response.Write方法写入脚本
比如在你单击按钮后,先操作数据库,完了后进行弹出框提示Response.Write("<scripttype='text/javascript'>alert();</script>");
缺陷:这个方法不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("<scripttype='text/javascript'>function myfun(){alert('a')}</script>");
(注意,后一个response方法与前一个不同,不会立即弹出框,因为它只是注册了一个客户端脚本函数,并不会执行该函数,所以只有调用myfun()函数时才会弹出框)
(二)通过Page 对象的 ClientScript 属性获取对 ClientScriptManager 类的引用以动态注册、调用客户端脚本
ClientScriptManager类简介:ClientScriptManager 类用于管理客户端脚本并将它们添加到Web 应用程序中,通过键 String 和 Type 唯一地标识脚本。具有相同的键和类型的脚本被视为重复脚本。使用脚本类型有助于避免混淆可能用在页中的来自不同用户控件的相似脚本
(1)方法ClientScriptManager.RegisterStartupScript(Type type, String key , String script)
参数
type:要注册的启动脚本的类型(一般直接填this.GetType()即可)。
key:要注册的启动脚本的键(相当于为执行脚本起一个名字,任意名即可)。
script:要注册的启动脚本文本("<script>函数()</script>",函数()可以为系统函数也可以为前台定义的js函数)。
- 客户端脚本由它的键(key)和类型(type)唯一标识。具有相同的键和类型的脚本被视为重复脚本。
- 调用 IsStartupScriptRegistered 方法以确定具有给定的键和类型对的启动脚本是否已经注册,从而避免不必要的添加脚本尝试。
- RegisterStartupScript 方法添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行
举例:
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RegisterStartupScript.aspx.cs" Inherits="WebApplication4.WebForm12" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
function test() {
alert("前台定义的客户端脚本");
}
</script>
</head>
<body>
<form );
}
}
}
总结
因为js非常灵活强大,我们往往在后台需要用到它的方法;当客户端脚本的内容依赖于直到运行时才可用的信息时;当您希望客户端脚本在当页已完成加载或当用户提交页时执行;都会用到后台调用或注册客户端脚本的技术。
以上是总结的后台注册、调用客户端脚本的方法,请参考…
客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本
用途
何时使用服务器代码向页中添加客户端脚本:
u 当客户端脚本的内容依赖于直到运行时才可用的信息时
u 当您希望客户端脚本在当页已完成加载或当用户提交页时执行
方法
(一)用Response.Write方法写入脚本
比如在你单击按钮后,先操作数据库,完了后进行弹出框提示Response.Write("<scripttype='text/javascript'>alert();</script>");
缺陷:这个方法不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("<scripttype='text/javascript'>function myfun(){alert('a')}</script>");
(注意,后一个response方法与前一个不同,不会立即弹出框,因为它只是注册了一个客户端脚本函数,并不会执行该函数,所以只有调用myfun()函数时才会弹出框)
(二)通过Page 对象的 ClientScript 属性获取对 ClientScriptManager 类的引用以动态注册、调用客户端脚本
ClientScriptManager类简介:ClientScriptManager 类用于管理客户端脚本并将它们添加到Web 应用程序中,通过键 String 和 Type 唯一地标识脚本。具有相同的键和类型的脚本被视为重复脚本。使用脚本类型有助于避免混淆可能用在页中的来自不同用户控件的相似脚本
(1)方法ClientScriptManager.RegisterStartupScript(Type type, String key , String script)
参数
type:要注册的启动脚本的类型(一般直接填this.GetType()即可)。
key:要注册的启动脚本的键(相当于为执行脚本起一个名字,任意名即可)。
script:要注册的启动脚本文本("<script>函数()</script>",函数()可以为系统函数也可以为前台定义的js函数)。
- 客户端脚本由它的键(key)和类型(type)唯一标识。具有相同的键和类型的脚本被视为重复脚本。
- 调用 IsStartupScriptRegistered 方法以确定具有给定的键和类型对的启动脚本是否已经注册,从而避免不必要的添加脚本尝试。
- RegisterStartupScript 方法添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行
举例:
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RegisterStartupScript.aspx.cs" Inherits="WebApplication4.WebForm12" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
function test() {
alert("前台定义的客户端脚本");
}
</script>
</head>
<body>
<form );
}
}
}
总结
因为js非常灵活强大,我们往往在后台需要用到它的方法;当客户端脚本的内容依赖于直到运行时才可用的信息时;当您希望客户端脚本在当页已完成加载或当用户提交页时执行;都会用到后台调用或注册客户端脚本的技术。
以上是总结的后台注册、调用客户端脚本的方法,请参考…