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.Session等..

このリンクはあなたを助けるかもしれません:静的メソッドなしでAJAXを介してサーバー側を呼び出す

Webメソッドを静的に制限する理由は、インスタンスページのコントロールにアクセスしないようにするためです。

于 2012-09-14T06:32:35.890 に答える
0

Yoは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 に答える