【问题标题】:Call code behind method from Jquery从 Jquery 调用方法背后的代码
【发布时间】:2010-03-22 13:31:48
【问题描述】:

我有这个问题:

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

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

当我在做 MVC 的时候,调用那个方法很简单:

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

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

提前致谢。

【问题讨论】:

    标签: jquery post


    【解决方案1】:

    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... }
    

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案3】:

        有几种方法可以做到这一点。和上面一样,看看 .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 返回对象,请注意“数据类型”属性,有时我发现 .NET 返回的字符串对象必须使用 json2.js 文件 - http://www.json.org/js.html 转换为 JSON。它让我很长一段时间都陷入了困境。这是一个很好的网站,可以解释 JSON,因为这是 PageMethod/WebMethods 真正使用的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-01
          • 1970-01-01
          相关资源
          最近更新 更多