善良公社中有项“”加我好友“的功能,刚开始点击的时候一直加不上。这里分享一下我的做法。
Form表单作为传参数使用
<form id="Form1">
<input id="Hidden1" name="userid" type="hidden" />
<input id="Hidden2" name="test" type="hidden" />
</form>
Web页面是用Repeater控件来绑定数据
<asp:Repeater ID="userinfo" runat="server">
<ItemTemplate> <tbody> <tr>
<td> <a href="#" id="addFriend" οnclick="makeFriends(<%#Eval("UserID") %>);return false;">加为好友
</a>
</td>
</tr>
刚开始的时候在<a>标签中用title属性来绑定了UserID,但是只能第一次加好友成功,其余加其他人都默认是同样的一个UserID,实在没办法了,让小崔哥指点了一下,就是在事件中传递参数。
Js中写法是
function makeFriends(friendid) {
//获取当前登陆用户名字
var val = "<%= Session["UserName"]==null?"":Session["UserName"] %>";
//获取当前登陆的用户ID
var id = '<%=Session["UserID"] %>';
if (val == "") {
alert("请先登录之后,再进行相关的操作");
return false;
} else {
document.getElementById("test").value = "add" //表示处理程序中的类型是添加好友
test = document.getElementById("test").value; //
document.getElementById("userid").value =friendid //获取加好友的ID
userid = document.getElementById("userid").value;
//登陆的ID和添加用户的ID一致则判断
if (id ==friendid) {
alert("不能添加本人为好友!")
return;
}
$.messager.confirm("提示", "你要添加他为好友吗?", function (r) {
if (r) {
//提交表单
$.ajax({
type:"post",
url: "AddFriend.ashx?test=" + test + "&userid="+userid, //传递给一般处理程序
//判断结果是否正确
success: function (data) {
if (data == "T") {
alert('恭喜您,添加好友成功!');
}
else {
if (data == "A") {
alert("该好友已经添加!");
} else
{
alert('添加好友失败,请重新操作!');
}
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert(XmlHttpRequest.responseText);
}
})
}
})
}
}
一般处理程序中
public void ProcessRequest(HttpContext context)
{
string command = context.Request.QueryString["test"];//标记是事件的类型:增删改
if (command == "add")
{//调用添加方法
Add(context);
}
}
/// <summary>
/// 添加好友
/// </summary>
/// <param name="context"></param>
public void Add(HttpContext context)
{
FriendConnectionEntity enfcon = new FriendConnectionEntity();//实例化一个实体类
enfcon.FriendID = context.Request.QueryString["userid"];//前台传的标示值,选择的用户ID
if (context.Session["UserID"] == null)
{
context.Response.Write("F");
}
else
{
enfcon.UserID = context.Session["UserID"].ToString();
}
enfcon.State = "待定";
FriendConnectionBLL fcon = new FriendConnectionBLL();//实例化一个B层
try
{
//判断该好友是否已经添加
if (fcon.IsExistFriend(enfcon))
{
context.Response.Write("A"); //该好友已经添加过
}
else
{
//好友没有添加过,查看是否添加成功
if (fcon.Add(enfcon))
{
context.Response.Write("T");
}
else
{
context.Response.Write("F");
}
}
}
catch (Exception ex)
{
}
}
这样加为好友的功能就完美实现了。
这样的一个小功能折腾了半天,知道了在事件中也可以传递参数,了解了一下ajax的用法,和传递一般处理程序并返回值的过程。其实学到的东西也蛮多的。善良公社1.0即将完本,整理吸收一下大家的知识,开始进行下一步的学习。