1

私は何かをしようとしていますが、成功していません。1. jqueryによるajax呼び出しを実行し、配列を渡したい(データプロパティにあるはずだと思った)。2.次に、サーバー側でこの配列を取得したいのですが、方法がかなりわかりません。

誰かがこれを簡単に行う方法を説明できますか?context.Request.Paramsを使用することを考えましたが、これは正しい方法ではないと推測しています。

var array = [];
...

 $.ajax({
      cache: false,
      method: 'json',
      url: 'handler/myhandler.ashx',
      data: array
4

2 に答える 2

2

編集:私はあなたがあなたのデータを「投稿」する必要があることに気づきました。「type:'POST'」をajax呼び出しに追加する必要があります:)

 $.ajax({
      type: 'POST',
      cache: false,
      method: 'json',
      url: 'handler/myhandler.ashx',
      data: array

正解です。配列はajax呼び出しの「data」プロパティに挿入する必要があります。

ハンドラーのHttpContextを介して、サーバー側のデータにアクセスできます。requestという属性があります。

オブジェクトをオブジェクトに変換するための、デシリアライズの例を次に示します。辞書に逆シリアル化される場所。

public void ProcessRequest(HttpContext context)
{
    var data = context.Request;
    var sr = new StreamReader(data.InputStream);
    var stream = sr.ReadToEnd();

    var javaScriptSerializer = new JavaScriptSerializer();

    var arrayOfStrings = javaScriptSerializer.Deserialize<string[]>(stream);
于 2012-12-08T10:24:37.897 に答える
0

次のようにJSON.stringify()を使用します。

 $.ajax({
      cache: false,
      method: 'json',
      url: 'handler/myhandler.ashx',
      data: JSON.stringify(array),
      type: "POST"

データがサーバー側に送信された後、今必要なのはオブジェクトを逆シリアル化することだけです。これがその方法です。

//might be something else other than Forms["json"], use debug mode to figure out the param
    string json = HttpContext.Current.Request.Forms["json"];
    JavaScriptSerializer  serializer= new JavaScriptSerializer();
    var urObj = serializer.Deserialize<Type>(json);
于 2012-12-08T10:23:34.420 に答える