如何在javascript函数中调用服务器端函数

时间:2015-01-08 06:57:16

标签: javascript asp.net function

我有一个按钮,点击后会执行此操作:

protected void Button6_Click(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), 
                    "myScript", "AnotherFunction();", true);
}

我还有另一个服务器端功能:

public void Delete()
{
  //Delete Code
}

点击按钮后,它将转到此javascript功能:

现在我要做的是,在SERVER端调用Delete()函数。这是我迄今为止尝试过的javascript函数

function (isConfirm) 
{
   if (isConfirm)
   {
       //CALL DELETE FUNCTION HERE Delete();
       swal("Deleted!", "Your imaginary file has been deleted.", "success");
   }
   else
   {
       swal("Cancelled", "Your imaginary file is safe :)", "error");
   }
 });

如何调用该服务器端功能?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我会在页面中添加一个ScriptManager并启用PageMethods;

和代码:

在ASPX中:

<asp:ScriptManager runat="server" EnablePageMethods="true" />

在Javascript中:

<script>
     PageMethods.Delete();        
</script>

在ASPX.cs中:

[System.Web.Services.WebMethod]
public static void Delete()
{
     //Delete Code
}

答案 1 :(得分:0)

您可以通过两种方式实现这一目标。 JS中的Ajax / Web Service或触发按钮单击。最简单的是触发按钮点击。使用以下代码。

ASPX:

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" ClientIDMode="Static" style="display:none;"/>

C#:

protected void Button1_Click(object sender, EventArgs e)
{
      Delete();
}

JS:

document.getElementById('Button1').click();

// jquery
$("#Button1").click();

但如果您不想回发页面,请使用Ajax。 在Ajax中,你需要添加一个网页说data.aspx,在data.aspx的后端类中你将添加以下c#

的Ajax。 C#

 [WebMethod]
 public static int DoSomething(int Id)
 {
       return 1;
 }

现在你可以从JS中调用它:

$.ajax({
            url: APP_PAGE_RELATIVE_PATH + "Data.aspx/DoSomething",
            data: "{'Id':5}",
            type: "POST",
            cache: false,
            headers: { "cache-control": "no-cache" },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {

                // Do Something

            },
            error: function (xhr, status, error) {
                //DebugAlert("Error: " + xhr.responseText);
            }
        });