我正在做类似的事情:
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: '/Modal/getModalInfo',
data: '{"machine":"' + machine + '"}',
success: function (response) {
modalData = response;
fillModal();
}
});
如果我调试C#并检查将响应发送回JS,则数据看起来完全正确。
Ajax调用中的响应只是:
response = Object {}
完全是空的我正在以与正确执行完全相同的方式进行其他几个Ajax调用。
编辑:
就C#返回Ajax而言:
try {
return Json(allInfo, JsonRequestBehavior.AllowGet);
}
catch (Exception ex) {
return new JsonResult();
}
“ allinfo”看起来像:
AllTheInfo allInfo = new AllTheInfo();
class AllTheInfo {
List<DownTimes> dList;
internal List<DownTimes> DList {
get { return dList; }
set { dList = value; }
}
List<PartsMade> pList;
internal List<PartsMade> PList {
get { return pList; }
set { pList = value; }
}
PartsTotals pTotal;
internal PartsTotals PTotal {
get { return pTotal; }
set { pTotal = value; }
}
}
在该类中引用的类是我创建的其他自定义类。
编辑:我也修改了我的Ajax调用以捕获错误,而且似乎也没有任何错误,只是一个空的成功响应。
再次编辑:现在,我尝试使用以下命令将要返回的对象转换为C#中的Json字符串:
string jsontext = "";
try {
jsontext = JsonConvert.SerializeObject(allInfo);
System.IO.File.WriteAllText(path, jsontext);
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
现在的问题是对JsonConvert的调用已成功完成(未捕获任何错误),但字符串等于“ {}”
我不确定为什么会解释为成功。
最佳答案
我过去曾见过这种情况,当时客户端由于语法错误,响应中的其他文本(例如HTML标记等)而无法解析从服务器返回的JSON。最好的选择是使用Fiddler(http://www.telerik.com/fiddler)或类似的代理之类的东西来准确查看响应中返回的内容(不仅是您从C#端返回的内容,因为可能还有其他过滤器,模块等会影响输出)离开服务器端方法后)。