在.net项目中使用Ajax来调用.aspx.cs函数不工作

时间:2012-07-09 22:01:44

标签: asp.net jquery asp.net-ajax

我在.net项目中使用Ajax(不是MVC.net)。我想从JScript函数调用我的.aspx.cs函数。

这是我的JScript代码:

    $("a#showQuickSearch").click(function () {
        if ($("#quick_search_controls").is(":hidden")) {
            $.ajax({
                type: "POST",
                url: "Default.aspx/SetInfo",
                data: "{showQuickSearch}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
               success: function(response) {
                     alert(response.d);
               }

            });
            $("#quick_search_controls").slideDown("slow");
            $("#search_controls").hide();
            $("#search").hide();
        } else {
            $("#quick_search_controls").hide();
        }

    });

这是我的.aspx.cs功能:

   [WebMethod]
    public string SetInfo(string strChangeSession)
    {
        Label1.Text = strChangeSession;
        return "This is a test";
    }

问题是我的.aspx.cs函数没有被调用,也没有更新label.text。

3 个答案:

答案 0 :(得分:1)

尝试将您的功能设为静态。

[WebMethod]
    public static string SetInfo(string strChangeSession)
    {
        //Label1.Text = strChangeSession; this wont work
        return "This is a test";
    }

答案 1 :(得分:1)

data: "{showQuickSearch}"无效JSON。

以下是有效JSON的外观:

data: JSON.stringify({ strChangeSession: 'showQuickSearch' })

您的PageMethod也需要是静态的:

[WebMethod]
public static string SetInfo(string strChangeSession)
{
    return "This is a test";
}

这显然意味着您无法访问任何页面元素,如标签和内容。现在,您可以使用PageMethod的结果来更新某些标签或其他任何内容,这是您成功回调的内容。

答案 2 :(得分:0)

 $.ajax({
            type: "POST",
            url: "Default.aspx/SetInfo",
            data: "{'strChangeSession':'showQuickSearch'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
                 alert(response.d);
           },
          error: function (xhr, status, error) {

                var msg = JSON.parse(xhr.responseText);
                alert(msg.Message);
            }
        });

你的后端代码:

 [WebMethod]
 public static string SetInfo(string strChangeSession)
 {
   return "Response ";
 }