我有一个Dictionary
名为finalDictionary
,它是通过合并多个字典创建的。 这是一段代码,我用它来创建此词典:将字典作为JSON返回并使用JS函数成功访问它的内容 - C#
Dictionary<string, Dictionary<DateTime, int>> finalDictionary= new Dictionary<string, Dictionary<DateTime, int>>();
finalDictionary.Add("Data1", listData1.ToDictionary(x => x.Date, y => y.Value));
finalDictionary.Add("Data2", listData2.ToDictionary(x => x.Date, y => y.Value));
finalDictionary.Add("Data3", listData3.ToDictionary(x => x.Date, y => y.Value));
注:listData1
,listData2
和listData3
是哪个,我转换成字典在上面的代码中所有的匿名名单。
下面是这些字典的样本格式:(让我们考虑Data1
)
Key : 'Data1'
Value :
[0] {[6/14/2015 12:00:00 AM, 1]}
[1] {[6/21/2015 12:00:00 AM, 0]}
[2] {[6/28/2015 12:00:00 AM, 0]}
[3] {[7/5/2015 12:00:00 AM, 0]}
[4] {[7/12/2015 12:00:00 AM, 0]}
[5] {[7/19/2015 12:00:00 AM, 0]}
[6] {[7/26/2015 12:00:00 AM, 0]}
因此,每个上面的日期是再次Key
一部分,这些数字Value
一部分。
我回到这个字典即finalDictionary
的JSON结果从我控制器方法如下:
return Json(new { Result = "OK", Records = obj.GetDetails()}, JsonRequestBehavior.AllowGet);
但是,当这种返回到我的调用JS阿贾克斯失败抛出下面的内部服务器500错误:
jqXHR = {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}, textStatus = "error", errorThrown = "Internal Server Error //and so on
这里是我的JS代码:
function loadDetails() {
$.ajax({
type: 'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
cache: false,
url: _WebRoot() + '/Charts/GetDetails',
success: function (response, textStatus, jqXHR) {
prepareData(response.Records, 'Text Title');
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Error - ' + errorThrown);
}
});
}
需要进行哪些修改才能使其工作?
注:我收到上面提到的错误的数据从控制器返回并到达JS方法
也许我偷懒不读代码,但可能有助于因为http状态码500可能是任何东西(引发异常),所以在C#中获得一些实际异常的日志记录。要么或者共享更多的控制器代码,以便我们可以尝试找出它抛出异常的位置。 –
从C#方面来看,没有任何异常,因为字典确实从控制器返回而没有任何错误。我想我正在做一些错误,无论是在返回的JSON格式或我的JS代码端的错误。 –
500错误肯定来自服务器(内部*服务器*错误) - 所以'/等等'部分是你看诊断它。 – James