金曜日の午後遅く、私はこれを長年にわたって戦ってきました...私はJSONを返すMVC2クラスを持っています。ブラウザでデシリアライズしようとすると、JQueryがエラーをスローします。ここでJQueryを使用してMVCからJSONを逆シリアル化する方法は?
は、コントローラです:
<HttpPost()>
Function ChangeAddress(ByVal addressId As Integer) As ActionResult
' Build and return JSON containing address.
Dim v As New TestViewModel With {.Address1 = "My House"}
Return Json(v)
End Function
は、ここでビューモデルです:
// If list is not empty and item was found...
if (found == true) {
var sum = 14;
// Get fields of newly selected address.
$.ajax({
url: '../../Checkout/ChangeAddress',
type: 'POST',
traditional: true,
data: { addressId: sum },
success: function (result) {
var json = result.get_data();
var data = Sys.Serialization.JavaScriptSerializer.deserialize(json);
alert("Success!");
}
});
};
デシリアライズコードはMVC Music Storeでの例からである。
Public Class TestViewModel
Public Property Address1 As String
End Class
そして、ここではスクリプトがあります。実行されると、JQueryはget_dataに対して例外をスローし、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と言います。さて、私はその行をコメントアウトし、デシリアライズしようとしました(結果)。次に、例外が "Sys.ArgumentException:デシリアライズできません。データが有効なJSONに対応していません。パラメータ名:data"と表示されます。
どこが間違っていますか?
私は笑う必要があります。どのda'ya知っている、私は直接明示的な解析せずにAddress1の値を読み取ることができます。 MVCに新しいことは、私はこのオートマティックなものすべてがうまくいくと思っていますが、ちょっと戸惑うこともあります。マジックを説明するルールブック(ポーションブック?)はどこですか?早速の対応、ありがとうございました。 – Adventure
@Adventure:http://api.jquery.com/jQuery.ajaxから始めましょう。具体的には 'dataType'オプションです。 –