从Jquery调用方法后面的代码

我有这个问题:

我怎么能从jquery调用codebehind方法? 我有一个网页:( ForgetPass.aspx)及其各自的代码隐藏(ForgetPass.aspx.cs)。 在代码隐藏上我有一个公共方法:

public void ChangeSession(string strChangeSession) { some stuff... } 

当我在使用MVC时,调用该方法非常简单:

 $.post("MyPageController/ChangeSession", { strChangeSession: 'yes' }); 

但是现在我在使用aspx / C#我不知道如何从jquery调用该方法(或者我可能需要在代码隐藏中使用[WebMethod]子句?)

提前致谢。

这里有一个完整的运行,解释了整个过程:)

是的,你需要[WebMethod]并且它也需要是静态的,请阅读教程以获得有关这些位的解释。

根据您的方法名称,您可能需要这样:

 [WebMethod (EnableSession = true)] //Allows access to session state public void ChangeSession(string strChangeSession) { some stuff... } 

您需要将页面方法设置为静态,并且还需要将其标记为[WebMethod],以便您可以使用jquery ajax访问它:

 var loc = window.location.href; $.ajax({ type: 'POST', url: loc + "/GetMessage", data: "{}", contentType: "application/json; charset=utf-8" }) .success(function (response) { alert(response.d); }) .error(function (response) { alert(response.d); }); 

在此处获取完整示例: http : //www.codegateway.com/2012/05/jquery-call-page-codebehind-method.html

几种方法来实现这一目标。 如上所述,请查看.NET PageMethod / WebMethods。 它将向您展示如何构建WebMethods并从Javascript调用它们。

我一直在改变.NET预构建的东西,并使用直接的jQuery ajax调用。 这是相同的事情,但使用jQuery你可以更多地控制调用及其返回的内容。

 jQuery.ajax({ type: "POST", url: "edit.aspx/yourmethodname", data: "{yourmethodparam:" + somevar + "}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(response) { alert(response.d); } error: function(err, response) { alert("error"); } }); 

它更复杂,但您可以更好地控制返回的对象类型,JSON或文本。

请记住,response.d如果您决定返回更多只是一个简单类型(如字符串或整数),则“d”是JSON对象。 您可以返回列表等对象。 这些将转换为JSON对象。 如果它是一个像整数这样的简单类型,那么只需’响应’即可。

如果你决定更复杂并使用JSON返回对象,请观察’datatype’属性,有时我发现.NET返回的字符串对象必须使用json2.js文件转换为JSON – http://www.json。 org / js.html 。 它把我扔了很长一段时间。 这是一个很好的网站,可以解释JSON,因为这就是PageMethod / WebMethods真正使用的东西。