私は、完全にajaxified(jquery libを使用)し、別のasp.netコールバックページを呼び出してサーバーにデータを取得/ポストするasp.netページを使用しています。 JSONオブジェクトをシリアル化すると、次のエラーを経験して、私のページの 一部のユーザーがajax asp.netコールバックページを呼び出す際にjsonオブジェクトをシリアライズ
タイプ...オブジェクト型の オブジェクトをデシリアライズするときにエラーが発生しましたは...無効 のutf8バイトに含まれてい
$.ajax({
type: "POST",
async: false,
url: 'AjaxCallbacks.aspx?Action=' + actionCode,
data: {
objectToSerialize: JSON.stringify(obj, null, 2)
},
dataType: "json",
success: function(operationResult) {
//handle success
},
error: function(xhttp, textStatus, errorThrown) {
//handle error
}
});
これに対処するために、私は "contentType"オプションを追加しました...
$.ajax({
type: "POST",
async: false,
url: 'AjaxCallbacks.aspx?Action=' + actionCode,
data: {
objectToSerialize: JSON.stringify(obj, null, 2)
},
contentType: 'application/json; charset=utf-8', //<-- added to deal with deserializing error
dataType: "json",
success: function(operationResult) {
//handle success
},
error: function(xhttp, textStatus, errorThrown) {
//handle error
}
});
しかし、私はこのようなオブジェクトをサーバー側で読むことはできませんd前:
string objectJson = Request.Params["objectToSerialize"].ToString();
「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生しました。
アイデア?
投稿パラメータがサーバに渡されたことを確認できますか? Firebugを使用して多分チェックしてください。 – xandy
ここに私のポストタブ(firebug)で見つけたもののサンプルがありますobjectToSerialize =%7B%0A ++%22Id%22%3A +%22846%22%2C%0A ++ 22 22FolderId%22%3A +%22405%22%2C%0A ++ Paramsタブ(firebug)には、私が投稿していると思ったアクションコードだけが含まれています。サーバ上のparamリストからこのjsonオブジェクトにアクセスすることはできません。フォームのコレクションでは、まだそれを得る方法がわからない。 – krul
私はRequest.InputStreamを読んでいると思う? – krul