4

这是我从 AJAX 调用的代码...

    [WebMethod]
    [ScriptMethod]
    public static string save(string parameter)
    {
        country_master obj_country = new country_master();
        obj_country.Country_Name = Page.Request.Params["name"].ToString().Trim();
        obj_country.saved();
        return "";
    }

在这里,我无法访问通过 Page.Request 从页面传递的参数。

string name = HttpContext.Current.Request.QueryString["name"].Trim();
return "error";

写完第一行后,return 语句不会向 AJAX 返回任何内容。请帮助我如何做到这一点。谢谢...

4

2 回答 2

5

要获取当前上下文,您可以使用HttpContext.Current,这是一个静态属性。

一旦你有了它,你就可以访问诸如会话或配置文件之类的东西,并获取有关站点状态的信息

HttpContext.Current.SessionETC..

这个链接可以帮助你:Call Server Side via AJAX without a Static Method

将 web 方法限制为静态的原因是为了避免它访问实例页面的控件。

于 2012-09-14T06:32:35.890 回答
0

你可以使用HttpContext.Current静态类,但是如果你在你的方法上声明你想要使用的参数,你可以跳过它,只需通过你的 AJAX 调用传递参数

您应该将参数直接传递给该方法。

我的 Github 存储库中有几个工作示例,请随意浏览代码。

总而言之,调用 PageMethod:

注意:如何使用 AJAX 将jobIDPageMethod 参数与请求一起传递,以及如何在 PageMethod 内部透明地使用

AJAX 调用

             $.ajax({
                type: 'POST',
                url: '<%: this.ResolveClientUrl("~/Topics/JQuery/Ajax/PageMethods_JQueryAJAX.aspx/GetEmployees") %>',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                data: '{"jobID" : ' + jobID +'}',
                async: false,
                cache: false,
                success: function (data) {
                    $('#employees').find('option').remove();
                    $.each(data.d, function (i, item) {
                        $('<option />').val(item.EmployeeID).text(item.FirstName).appendTo('#employees');
                    });
                },
                error: function (xhr) {
                    alert(xhr.responseText);
                }
            });

页面方法

    [WebMethod]
    public static List<EmployeeModel> GetEmployees(int jobID)
    {
        var ctx = new PubsDataContext();

        return (from e in ctx.employee
                where e.job_id == jobID
                orderby e.fname
                select new EmployeeModel
                {
                    EmployeeID = e.emp_id,
                    FirstName = e.fname
                }).ToList();
    }
于 2012-09-14T06:43:09.117 回答