StringBuilder strHtml = new StringBuilder();
strHtml.Append("<a onclick=\"GetPId(dt.rows[i][\"productID\"].ToString())\"><img src=\"../images/buttons_coll.jpg\" /></a>");
后台怎样动态给A标签添加onclick事件?我是这样想的:利用AJAX前台调用后台,然后把前台的方法传到onclick事件中,可是A标签点击事件没效果
后台方法:
string str;
/// <summary>
/// 收藏产品方法
/// </summary>
[AjaxPro.AjaxMethod]
public string GetSave(string pid)
{
Poucan.BLL.CustomerFavorites bll = new Poucan.BLL.CustomerFavorites();
Poucan.Model.CustomerFavorites model = new Poucan.Model.CustomerFavorites(); if (PageProduct.getCustomerName() != null)
{ if (bll.Exists(int.Parse(pid), PageProduct.getCustomerName()) == false)
{
model.Sorts = "1";
model.pid = int.Parse(pid);
model.Customer = PageProduct.getCustomerName();//用户
bll.Add(model);
}
else
{
}
}
return str;
}
前台方法: function GetPId(pid) {
alert("aaaaaaaaaaaaaaaa");
var Save = TextVerify.GetSave(document.getElementById("pid").value).value;
if (Save != "")
{
if (Save > 0)
{
alert("收藏成功!");
}
else {
alert("收藏失败!");
}
}
else {
alert("不能收藏,请登录",window.location="/User/login.aspx");
}
}
strHtml.Append("<a onclick=\"GetPId(dt.rows[i][\"productID\"].ToString())\"><img src=\"../images/buttons_coll.jpg\" /></a>");
后台怎样动态给A标签添加onclick事件?我是这样想的:利用AJAX前台调用后台,然后把前台的方法传到onclick事件中,可是A标签点击事件没效果
后台方法:
string str;
/// <summary>
/// 收藏产品方法
/// </summary>
[AjaxPro.AjaxMethod]
public string GetSave(string pid)
{
Poucan.BLL.CustomerFavorites bll = new Poucan.BLL.CustomerFavorites();
Poucan.Model.CustomerFavorites model = new Poucan.Model.CustomerFavorites(); if (PageProduct.getCustomerName() != null)
{ if (bll.Exists(int.Parse(pid), PageProduct.getCustomerName()) == false)
{
model.Sorts = "1";
model.pid = int.Parse(pid);
model.Customer = PageProduct.getCustomerName();//用户
bll.Add(model);
}
else
{
}
}
return str;
}
前台方法: function GetPId(pid) {
alert("aaaaaaaaaaaaaaaa");
var Save = TextVerify.GetSave(document.getElementById("pid").value).value;
if (Save != "")
{
if (Save > 0)
{
alert("收藏成功!");
}
else {
alert("收藏失败!");
}
}
else {
alert("不能收藏,请登录",window.location="/User/login.aspx");
}
}
strHtml.Append("<a onclick=\"GetPId(dt.rows[i][\"productID\"].ToString())\"><img src=\"../images/buttons_coll.jpg\" /></a>");后台这样不就给a添加了onclick事件了吗?
===============
var Save = TextVerify.GetSave(document.getElementById(pid).value).value;
=======
strHtml.Append("<a onclick=\"GetPId("+dt.rows[i]["productID"].ToString()+")\"><img src=\"../images/buttons_coll.jpg\" /></a>");
$("a[name='aaa']").click(){
//这里处理
}
})
看a标签的onclick事件解析后是什么样子的
你把JS代码放在from里面试一试你现在放在head里面吧
并单步调试
查看dt.rows[i]["productID"].ToString()是否有值
alert("aaaaaaaaaaaaaaaa");
var Save = TextVerify.GetSave(document.getElementById(pid).value).value;
alert("bbbbbbbbbbbbbbbbbbb");
if (Save != "") {
if (Save > 0) {
alert("收藏成功!");
}
else {
alert("收藏失败!");
}
}
else {
alert("不能收藏,请登录", window.location = "/User/login.aspx");
}
}
能执行到 alert("aaaaaaaaaaaaaaaa");
后面不执行了,应该是后台方法没有调用到
function GetPId(pid) {
// alert("aaaaaaaaaaaaaaaa");
var Save = TextVerify.GetSave(pid).value;
// alert("bbbbbbbbbbbbbbbbbbb");
if (Save !="") {
if (Save=="1") {
alert("收藏成功!");
}
else {
alert("收藏失败!");
}
}
else {
alert("不能收藏,请登录", window.location = "/User/login.aspx");
}
}
可以调用方法了,但是老是收藏失败!
/// <summary>
/// 收藏产品方法
/// </summary>
[AjaxPro.AjaxMethod]
public string GetSave(string pid)
{
string str=null; Poucan.BLL.CustomerFavorites bll = new Poucan.BLL.CustomerFavorites();
Poucan.Model.CustomerFavorites model = new Poucan.Model.CustomerFavorites(); if (PageProduct.getCustomerName() != null)
{ if (bll.Exists(int.Parse(pid), PageProduct.getCustomerName()) == false)
{
model.Sorts = "1";
model.pid = int.Parse(pid);
model.Customer = PageProduct.getCustomerName();//用户
int ID = bll.Add(model);
str = ID.ToString();
str = "1";
}
else
{
str = "2";
}
}
else
{
str = "3";
}
return str;
}前台:
function GetPId(pid) {
var SaveProduct = TextVerify.GetSave(pid,callback);
} //回调函数
function callback(aa)
{ if (aa.value == "1") {
alert("收藏成功!"); }
else if (aa.value == "2") {
alert("商品已存在,不能重复收藏!!"); }
else if (aa.value == "3") {
alert("不能收藏,请登录.........", window.location = "/User/login.aspx");
}
}
这是我完整的代码