ASPX页面用JS代码无法调用后台CS文件中的dataset数据,后台代码测试过,能取出数据无误。涉及到AJAX, JS代码
页面代码如下
<%@ Page language="c#" Inherits="JuSNS.Web.home.msn.Main" CodeFile="Main.aspx.cs" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<head>
<title>Web版MSN</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<link href="/template/<% Response.Write(JuSNS.Config.UiConfig.SkinStyle); %>/css/global.css" id="skinpath" type="text/css" rel="stylesheet" />
<script language="jscript" src="../../js/CLASS_MSN_MESSAGE.js"></script>
<script language="javascript" type="text/javascript" src="../../js/common.js"></script>
<style type="text/css">
A { COLOR: #013da4; TEXT-DECORATION: none }
A:visited { COLOR: #013da4; TEXT-DECORATION: none }
A:link { COLOR: #013da4; TEXT-DECORATION: none }
</style>
</head>
<body bottomMargin="0" onbeforeunload="javascript:__doPostBack('lbExit','')" bgProperties="fixed" bgcolor="#dae1f7" leftMargin="0" topMargin="0" scroll="no" onLoad="Init()" rightMargin="0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" height="100%" cellSpacing="1" cellPadding="1" width="100%" align="center"
border="0">
<TR height="50">
<TD align="center" style="HEIGHT: 39px"><asp:label id="lblUsername" runat="server" Font-Bold="True" ForeColor="#2767C8" Font-Size="Large"></asp:label>
</TD>
<td style="HEIGHT: 39px">
<SELECT name="user_status" onChange="setUserStatus()">
<OPTION value="1" selected>在线</OPTION>
<OPTION value="2">隐身</OPTION>
</SELECT>
</td>
<td style="HEIGHT: 39px">
<asp:linkbutton id="lbExit" runat="server" ForeColor="CornflowerBlue" onclick="lbExit_Click">注销</asp:linkbutton></td>
</TR>
<tr>
<td bgcolor="#fbfcfe" colspan="3" style="HEIGHT: 39px">在线友人</td>
</tr>
<TR>
<TD bgcolor="#fbfcfe" valign="top" colSpan="3" height="450">
<div id="userlist" style="MARGIN: 10px"></div>
</TD>
</TR>
<TR>
<TD colSpan="3"></TD>
</TR>
</TABLE>
</form>
<script type="text/jscript" language="jscript">
// 标志发送消息窗口是否打开的变量
var sendWindow = false;
// 检查用户状态是否变化的变量
var changedTimes = 0;
// 主进程
mainLoop();
function mainLoop()
{
// 检查用户登录状态
checkStatus();
// 更新用户列表
refreshUserlist();
// 检查最新消息
checkNewMessage();
// 每隔1秒执行一次JuSNS.Web.home.msn.MainLoop函数
setTimeout("mainLoop()", 1000);
}
// 将select的选中值设置为value
function setSelectedValue(selectname, value)
{
// 查找value对应于select中选项的序号
var index = -1;
var select = el(selectname);
for (var i = 0;i < select.options.length;i++)
{
if (select.options[i].value == value)
{
index = i;
break;
}
}
// 更改select的选中选项的序号
select.selectedIndex = index;
}
// 检查用户登录状态
function checkStatus()
{
// 获取用户登录状态
var status =JuSNS.Web.home.msn.Main.CheckStatus().value;
// 设置select的值
setSelectedValue("user_status", status);
}
// 更新用户列表
function refreshUserlist()
{
// 获取服务器端用户表UsersChanged字段的值
var changed =JuSNS.Web.home.msn.Main.StatusChanged().value;
// 如果用户表发生了变化
if (changed > changedTimes)
{
// 记下本次记录的UsersChanged字段的值
changedTimes = changed;
// 获取用户信息的数据表对象
var arUserlist =JuSNS.Web.home.msn.Main.GetOnlineUserList().value.Tables[0];
// 用于显示用户信息的<div>对象
var divUserlist = el("userlist");
// 删除原有的内容
while (divUserlist.childNodes.length > 0)
{
divUserlist.removeChild(divUserlist.childNodes[0]);
}
// 显示用户列表
for (var i = 0;i < arUserlist.Rows.length;i++)
{
// 用户登录名
var Email = arUserlist.Rows[i].Email;
// 昵称
var UserName = arUserlist.Rows[i].UserName;
// 创建用于显示一条用户信息的<div>对象
var result = document.createElement("div");
// 光标形状为手形
result.style.cursor = "pointer";
// 内补丁
result.style.padding = "2px 0px 2px 0px";
// 鼠标点击响应,打开发送消息窗口
result.onclick = function ()
{
// 如果发送消息窗口尚未打开
if (!sendWindow)
{
// 打开发送消息窗口,注意传递参数username和window
window.showModelessDialog("SendMsg.aspx?Email=" + Email,
window,"help:no;unadorned:yes;edge:sunken;status:no");
}
};
// 用户名和昵称的文本显示在<span>对象中
var result1 = document.createElement("span");
// 鼠标进入进出效果
result1.onmouseover = function ()
{
this.style.color = "#205288";
};
result1.onmouseout = function ()
{
this.style.color = "#000000";
};
// 显示样式
result1.style.textAlign = "left";
result1.style.fontWeight = "bold";
result1.style.fontFamily = "Arial, Verdana";
// 显示:用户名(昵称)
result1.innerHTML = username + " (" + nickname + ")";
// 将<div>对象附加到DOM中
result.appendChild(result1);
divUserlist.appendChild(result);
}
}
}
// 检查新消息
function checkNewMessage()
{
// 如果发送消息窗口未打开
if (!sendWindow)
{
// 获取新消息
var dt =JuSNS.Web.home.msn.Main.GetNewMessage().value.Tables[0];
// 如果有新消息
if (dt.Rows.length > 0)
{
// 发送者
var sender = dt.Rows[0].sender;
// 内容
var content = DealBrackets(dt.Rows[0].content);
// 提示框
var MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"消息提示:",sender + "说:",content);
// 设置点击提示框消息的响应函数
MSG1.oncommand = function()
{
if (!sendWindow)
{
window.showModelessDialog("SendMsg.aspx?Email=" + sender, window,"help:no;unadorned:yes;edge:sunken;status:no");
}
};
// 显示提示框
MSG1.rect(null,null,null,screen.height-50);
MSG1.speed = 10;
MSG1.step = 5;
MSG1.show();
}
}
}
// 设置用户登录状态
function setUserStatus()
{
// 用户名
var username = el("lblUsername").innerText;
// 状态
var status = el("user_status").value;
// 调用服务器端Ajax方法
JuSNS.Web.home.msn.Main.SetUserStatus(username, status);
}
</script>
</body>
</HTML>