0

私はAJAXプロジェクトを書いていますが、これを行う正しい方法を知りたいです(ビジュアルスタジオのビルトインAJAXを使用せずに)

私はJQueryでAJAX呼び出しを使用しています。これが私の問題です。サーバー側で、HTMLコードを含まないAjaxProj.aspxを作成しました。このPage_load関数には、ajaxリクエストをキャッチするすべてのコードがあり、コードの最後にありますもっている

response.end();

私はそれを正しい方法で使用しているかどうかを本当に知りたいです(ツールボックスから.net AJAXを使用したくありません)

皆さん...

4

2 に答える 2

0

最初にサーバー側のコードを書きます:

[WebMethod()]
public static string GetData(int userid)
{
    /*do stuff*/
    return userId.ToString();
}

重要な注意: メソッドは静的である必要があり、WebMethod 属性と javascript 部分が必要です。

function asyncServerCall(userid) {
    jQuery.ajax({
 url: 'WebForm1.aspx/GetData',
 type: "POST",
 data: "{'userid':" + userid + "}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function (data) {
     alert(data.d);
 }

    });
}

次に、js 関数を渡すことを忘れないでください。

<input type="button" value="click me" onclick="asyncServerCall(1);" />

ScriptManagerでPageMethodsを有効にする必要があります

于 2012-08-17T11:13:26.220 に答える
0

Ajax を適切に使用するには、コードの一部を貼り付けてください。webmethode 関数を使用する必要があり、関数は次のように静的である必要があります。

 $(document).ready(function () {
  var text = $("#<%=ApplicationSearchResult.ClientID %>").val(); 
  // Add the page method call as an onclick handler for the div.
  $("#<%=ApplicationSearchResult.ClientID %>").autocomplete({
   source: function (request, response) {
   $.ajax({
   type: "POST",
   url: "Dashboard.aspx/GetTreeNodesByText",
  data: "{'text': '" + request.term + "'}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
 success: function (data) {
  response(data.d);
   }
  });
  },
  minLength: 1
  });//end auto complete

  });

サーバー側機能:

[WebMethod]
public static List<string> GetTreeNodesByText(string text)
{


    List<string> Nodes = new List<string>();
    if (HttpContext.Current.Session["SerialSearchDT"] != null)
    {

        DataTable DT = HttpContext.Current.Session["SerialSearchDT"] as DataTable;
        DataRow[] filteredDataTable = DT.Select("NODE_NAME LIKE '" + text + "%'");
        //  DT.DefaultView.ToTable(true, "NODE_NAME");

        for (int i = 0; i < filteredDataTable.Length; i++)
        {
            string res = filteredDataTable[i][2].ToString();

            Nodes.Add(res);

        }//end For

    }//endIF
    return Nodes.Distinct().ToList();
}

これは一例であり、問​​題の解決に役立つことを願っています

于 2012-08-17T11:05:10.153 に答える