严格意义来讲javascript也是能在服务器端执行的
在客户端执行的脚本代码
一般只有在<script>脚本没有指明runat="server"的前提下比如
<script language="javascript"
runat="server">
function abc()
{
Response.Write("这是在服务器端执行的Javascript");
}
</script>
而
<script language="javascript" >
function abc()
{
alert("这是在客户端执行的Javascript");
}
</script>
最最重要的一点,无论客户端用javascript或vbscript,或者服务器端。
客户端与服务器端的任何脚本和程序都是独立运行的,互不相干(无论这个脚本用什么语言写的)。
所以
<Script Language ="JAVAScript">
function baomcy(inches) {
var username = "<%=session("UserName")%>";
if(username =="")
alert("请登陆");
else
{
<%
dim rsuser
set rsuser=server.createobject("adodb.recordset")
sql3="SELECT * FROM aaa WHERE id="&ttid
rsuser.open sql3,conn,1,3
'rsuser.addnew
rsuser("leib_user")=session("UserName")
rsuser.update
rsuser.close
%>
alert("成功提交!");
}
你这段代码想要客户端判断用户名不为空,再修改数据库。
但是你这样写是错误的在于,服务器端的代码先执行,而且只会执行<%%>内或<script runat="server">的脚本,其他脚本不会执行。
所以<%%>早在网页加载时就执行了,因为服务器代码优先于客户端代码先执行。
这是因为网页是先从服务器端下载到客户端浏览器的,你输入网址的网页不存在你的电脑上。
通俗点说你输入百度网址,你电脑里存着百度的网页原始文件程序了么?
因此,实现你这个功能,要么用传统做法判断用户名是否为空后,提交表单或用self.location向服务器发送请求一个再来修改
要么使用Ajax来实现,不过Ajax也得要向服务器发送请求。
传统做法思路
<html>
<head>
<Script Language ="JAVAScript">
function baomcy(inches)
{
var username = "<%=session("UserName")%>";
if(username =="")
alert("请登陆");
else
{
var thref=self.location.href;
if(thref.indexOf('?')!=-1)
thref+="&Action=UpdateSession";
else
thref+="?Action=UpdateSession";
self.location=thref;
}
}
function Page_Load()
{
<%
IF Request("Action")="UpdateSession" Then
dim rsuser
set rsuser=server.createobject("adodb.recordset")
sql3="SELECT * FROM aaa WHERE id="&ttid
rsuser.open sql3,conn,1,3
rsuser("leib_user")=session("UserName")
rsuser.update
rsuser.close
Response.Write "alert('成功提交');"
End IF
%>
}
Page_Load();
</script>
</head>
<body>
</body>
</html>
[
本帖最后由 yms123 于 2010-5-18 16:48 编辑 ]