0

私は jquery の初心者で、1 つの問題があります。2 つの .aspx ファイルがあります。そのうちの 1 つにスクリプトが含まれています。

<script type ="text/javascript">
    $(document).ready(function () {
        var schemaName = GetURLParameters('schemaName');
        var key = GetURLParameters('key');
        $.post("dataloader.aspx", {
            name: schemaName,
            key: key
        });
    });
</script>

パラメータを他のページ「dataloader.aspx」に送信します。「dataloader.aspx.cs」コードは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "application/json";
            var schemaName = Request.Form["name"];
            var key = Request.Form["key"];

            Loader loader = ConnectionManager.getLoader();
            Dictionary<string, string> name_value = new Dictionary<string, string>();
            if (!string.IsNullOrEmpty(schemaName))
            {
                var schema = loader.GetSchema(schemaName);
                var qcontext = new SimpleLoader.BOService.QueryContext();
                qcontext.InitQueryContext();

                var element = loader.GetObjectByKey(schema, key);
                var viselems = element._Schema.GetVisibleElems(); 
                var cardElems = viselems.Where(x => !(x is SchemaElemDetail)).ToList();

                foreach (var elem in cardElems)
                {
                    var value = (element.GetValue(elem.Name) ?? "").ToString();
                    if (!string.IsNullOrEmpty(value))
                    {
                        name_value.Add(elem.Name, value);
                    }
                }
                Response.Write(name_value);
                Response.Flush();
                Response.End();
            }

        }

ご覧のとおり、辞書にデータを追加しています。この辞書をクライアント側の「clientcard.aspx」にjQueryで送信したいのですが、方法がわかりません...助けてもらえますか?? とても感謝しています。

4

3 に答える 3

2

で webmethod を呼び出す方法がありますdataloader.aspx。関数の名前が であると仮定するとgetNameValue、aspx ページには、次のような webmethod があります: (基本的に、コードをPage_Loadイベントからこれに転送します)

[System.Web.Services.WebMethod]
public static Dictionary<string, string> getNameValue(string name, string keyN) 
{
  var schemaName = name;
  var key = keyN;

  Loader loader = ConnectionManager.getLoader();
  Dictionary<string, string> name_value = new Dictionary<string, string>();
  if (!string.IsNullOrEmpty(schemaName))
  {
    var schema = loader.GetSchema(schemaName);
    var qcontext = new SimpleLoader.BOService.QueryContext();
    qcontext.InitQueryContext();

    var element = loader.GetObjectByKey(schema, key);
    var viselems = element._Schema.GetVisibleElems(); 
    var cardElems = viselems.Where(x => !(x is SchemaElemDetail)).ToList();

    foreach (var elem in cardElems)
    {
      var value = (element.GetValue(elem.Name) ?? "").ToString();
      if (!string.IsNullOrEmpty(value))
      {
         name_value.Add(elem.Name, value);
      }
    }    
  }
  return name_value; //will be automatically serialised to JSON because of the dataType specification in ajax call.
}

ready次のように jQuery でこの関数を呼び出します。

  $(document).ready(function () {
        var schemaName = GetURLParameters('schemaName');
        var key = GetURLParameters('key');
        //just in case
        var data = JSON.stringify({
            name: schemaName,
            keyN: key
        });

        $.ajax({
            type: "POST",
            url: "dataloader.aspx/getNameValue",
            data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            error: function (xhr, status, error) {
                var msg = JSON.parse(xhr.responseText);
                alert(msg.Message);
            }
          }).done(function (msg) {
            //msg.d will contain your dictionary
          });
  });

この方法を使用するほうがよい理由は、コードが再利用可能になるためです。現在の設定では、name_value辞書を取得したい場合は、aspx ページをリロードする必要があります。あとは、このメソッドを呼び出すだけです。

お役に立てれば!

于 2013-07-25T15:41:30.690 に答える
0

DataLoader.aspx ページから JSON に変換することをお勧めします。次に、上記のコード セグメントにコールバックを追加します。

  $.post("dataloader.aspx", {
        name: schemaName,
        key: key,
        success: function(d) { .. }
  });

変数「d」には、おそらく文字列である応答が含まれます。次に、JSON.parse を使用してコンテンツを解析するか、JSON を直接渡すことにより、同じ方法で JQuery を使用してデータを次のページに送信できます。

于 2013-07-25T15:34:22.200 に答える