2

こんにちは、
私がここで間違っていることを誰でも知っています。jQuery AJAX を使用して JSON オブジェクトを ASP.Net WebMethod に POST しようとしています。

サーバー側でオブジェクトを取得していますが、望んでいた方法ではありません。customer オブジェクトを単純なオブジェクトにして、customer.Name などの通常のインスタンスのようにアクセスできるようにしたかったのですが、辞書オブジェクトとして取得しているため、アクセスできません。

編集::JSONがc#動的型の辞書オブジェクトとしてサーバー側で取得されるのはなぜですか?

これがクイックウォッチのスクリーンキャストです。 json オブジェクトは単純なオブジェクトではなく、辞書として提供されます

これがJavaScriptとサーバー側のコードです。

 function SaveCustomer() {
  var funcParams = JSON.stringify({
    customer: {
      Name: "Name of Customer",
      Title: "President"
    },
    address: {
      Street: "Street",
      City: "",
      Zip: ""
    }
  });

// 次の json パラメータを試してみましたが、結果は同じです。

var funcParams = "{\"customer\":" + JSON.stringify({ Name: "Name of
 Customer", Title: "President" }) + ",\"address\":" + 
JSON.stringify({ Street: "Street", City: "", Zip: "" }) + "}";
}

 $.ajax({ type: "POST", contentType: "application/json; charset=utf-8",
 dataType: "json", url: "aspxPage.aspx/SaveCustomer", data: funcParams,
 success: function(){  }, error: function(e){alert("Error occured"+e);} 
 })


[WebMethod(EnableSession = true)]
public static string SaveCustomer(dynamic customer, dynamic address)
{
     if(!string.IsNullOrEmpty(customer.Name) && 
         !string.IsNullOrEmpty(customer.Title)....)
      {
           //app logic
      }
}

4

2 に答える 2