这是前台写的js脚本
function guanzhu() {
var hotelid = "<%=HotelID %>";
var loginid = "<%=Loginid %>";
if (loginid == null || loginid == "") {
alert("请先登录")
}
else {
var aa = "<%= addatt2()%>";
}
if (aa == 1) {
document.getElementById("guanzhuid").innerHTML = "已关注" } else if (aa == 2) {
alert("您已关注过此酒店");
}
}
这是调用后台的方法 public static string addatt2()
{
string rt="";
int userid = 0;
DataTable dt = userbll.GetList("LoginId='" + Loginid+"'").Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
userid = Convert.ToInt32( dt.Rows[i]["user_Id"]);
}
DataTable selectAtt = attbll.GetList("AttentionHotelId='" + hotelID + "' and AttentionUserId='" + userid + "'").Tables[0];
if (selectAtt.Rows.Count > 0)
{
rt = "2";
}
else
{
if (userid != 0)//我在这加了一个判断
{
attmodel.AttentionHotelId = hotelID;
attmodel.AttentionUserId = userid;
attbll.Add(attmodel);
rt = "1";
}
} return rt; }不知道为什么,这是一个a标签的onclick事件,可是没有点击a标签 onclick在页面加载的时候就执行。。加的判断是在没有登录的时候有效。登陆之后点进去一个页面,就自动关注了。。脚本关注
function guanzhu() {
var hotelid = "<%=HotelID %>";
var loginid = "<%=Loginid %>";
if (loginid == null || loginid == "") {
alert("请先登录")
}else {
var aa = "<%= addatt2()%>";
if (aa == 1) {
document.getElementById("guanzhuid").innerHTML = "已关注"
} else if (aa == 2) {
alert("您已关注过此酒店");
}
}
}这样是不是更合理一点?还有你后台的方法,在查询数据库之前就判断userid吧,为0就直接返回,不为0再去查询数据吧。好像你这代码进页面就会直接调用后台的addatt2啊。。所以给你的感觉是直接关注了。。你把JS跟后台数据混写,结果就是每次加载页面的时候都会先执行你后台的addatt2方法,然后才会生成那段JS,最后在你点击a标签的时候,才会执行这样的JS函数,然后是改变DOM。我想要想实现你要的效果是要AJAX来实现的。