如何在asp.net中的WebMethod中使用ScriptManager.RegisterStartupScript

本文关键字:ScriptManager RegisterStartupScript WebMethod 中的 asp net | 更新日期: 2023-09-27 18:30:08

我有一个条件,需要使用以下Web方法调用jquery函数:

[WebMethod]
public static void BindData(String Site)
{
    String HTML = "";
    Int32 i = 1;
    DataTable dt = new DataTable();
    dt = obj.GetAll(objprop);
    if (dt.Rows[0]["UserId"].ToString() != "0")
    {
        foreach (DataRow item in dt.Rows)
        {
            string Email = Bal.Common.Decryptdata(item["Email"].ToString());
            string SentInvitation = item["SentInvitation"].ToString();
            SentInvitation = SentInvitation.ToString() == "1" ? "Already Invited" : "";
            if (i % 2 == 0)
                HTML += "<div class=~other_wish_row2~><div class=~friend_list_box1~><input type=~checkbox~ class=~chkEmail~ id=~chkId^" + i + "~/></div><div class=~friend_list_box2~><p><label id=~lbl" + i + "~>" + Email.ToString() + "</label><label class=~SentInvitationLbl~ id=~lblSentInvitation" + i + "~>" + SentInvitation + "</label></p></div><div class=~friend_list_box3~></div><div class=~clear~></div></div>";
            else
                HTML += "<div class=~other_wish_row3~><div class=~friend_list_box1~><input type=~checkbox~ class=~chkEmail~ id=~chkId^" + i + "~/></div><div class=~friend_list_box2~><p><label id=~lbl" + i + "~>" + Email.ToString() + "</label><label class=~SentInvitationLbl~ id=~lblSentInvitation" + i + "~>" + SentInvitation + "</label></p></div><div class=~friend_list_box3~></div><div class=~clear~></div></div>";
            i = i + 1;
        }
        ScriptManager.RegisterStartupScript((Page)(HttpContext.Current.Handler), typeof(Page), "hdrEmpty1", "Test('" + HTML + "');", true); return;
    }
    else
    {
    }
}

Jquery代码为:

function Test(data) {
   alert('hi');
}
function Binddata(SocialSite) {
$.ajax({
    type: "POST",
    url: "InviteFriends.aspx/BindData",
    data: "{SocialSite:'" + SocialSite + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
    }
 });
}

我无法启动Test(),请帮助解决此问题。

如何在asp.net中的WebMethod中使用ScriptManager.RegisterStartupScript

您不能从web服务(.asmx文件或WebMethod)执行此操作,因为它不是在正常页面的上下文中运行的。我看到您正在使用AJAX,您必须在jQuery.ajax()调用的success回调方法中进行处理,如下所示:

 function Test(data) {
    alert('hi');
 }
 function Binddata(SocialSite) {
 $.ajax({
     type: "POST",
     url: "InviteFriends.aspx/BindData",
     data: "{SocialSite:'" + SocialSite + "'}",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function (data) {
         Test(data);
     }
  });
 }