Я использую страницу asp.net, полностью ааксированную (с jquery lib) и вызывающую другую страницу обратного вызова asp.net для получения/отправки данных на сервер. Некоторых пользователи моей страницы, испытывающих следующее сообщение об ошибке при сериализации объекта JSonСериализация объектов json при вызове функции обратного вызова ajax asp.net
произошла ошибка десериализация объекта типа типа ... объект ... содержит недопустимые 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
}
});
, но теперь я не могу прочитать этот объект на стороне сервера, как я мог до:
string objectJson = Request.Params["objectToSerialize"].ToString();
У меня возникла следующая ошибка: «Ссылка на объект не установлена в экземпляр объекта».
Любые идеи?
Можете ли вы проверить, какой параметр сообщения был передан серверу? Используйте Firebug, чтобы проверить, возможно. – xandy
Вот образец того, что я нашел в моей вкладке (firebug) объектаToSerialize =% 7B% 0A ++% 22Id% 22% 3A +% 22846% 22% 2C% 0A ++% 22FolderId% 22% 3A +% 22405% 22% 2C% 0A ++ % 22Positio% 22% 3A +% 22% 22% 0A% 7D Вкладка Params (firebug) содержит только код действия, я решил, что я отправляю сообщения и не могу получить доступ к этому объекту json через список параметров на сервере, вместо этого он должен быть в форме коллекции, еще не уверен, как это получить .. – krul
Я думаю, что я прочитал запрос Request.InputStream ...? – krul