从Jquery调用方法后面的代码

时间:2010-03-22 13:31:48

标签: jquery post

我有这个问题:

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

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

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

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

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

提前致谢。

3 个答案:

答案 0 :(得分:5)

There's a full run down here that explains the whole process :)

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

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

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

答案 1 :(得分:2)

您需要将页面方法设置为静态,并且还需要将其标记为[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

答案 2 :(得分:1)

实现这一目标的几种方法。如上所述,请查看.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真正使用的。