gpt4 book ai didi

jquery - 调用ajax asp.net回调页面时序列化json对象

转载 作者:行者123 更新时间:2023-12-01 04:32:16 24 4
gpt4 key购买 nike

我正在使用完全ajaxified的asp.net页面(带有jquery lib)并调用另一个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
}
});

但现在我无法像以前一样在服务器端读取此对象:

string objectJson = Request.Params["objectToSerialize"].ToString();

我收到以下错误:“未将对象引用设置为对象的实例。”

有什么想法吗?

最佳答案

在第二种情况下,您收到 NullReferenceException 的原因是因为您在发送请求时以及在服务器端 ASP 上使用 application/json 作为 Content-Type header .NET 在填充 Request 对象时期望数据以表单发布的形式到达,因此它不包含 objectToSerialize 参数。您可以尝试使用以下方法:

contentType: 'application/x-www-form-urlencoded; charset=utf-8'

或者坚持使用application/json并手动读取和解析请求流:

using (var reader = new StreamReader(Request.InputStream))
{
var input = reader.ReadToEnd();
var objectToSerialize = input.Split('=')[1];
}

关于jquery - 调用ajax asp.net回调页面时序列化json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1147673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com