我做了类似的事情:
$.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的调用成功完成(没有错误被捕获)但字符串等于&#34; {}&#34;
我不确定为什么这会被解释为成功。
答案 0 :(得分:0)
过去,当客户端由于语法错误,响应中的其他文本(例如HTML标签等)而无法解析从服务器返回的JSON时,我已经看到了这一点。最好的办法是使用类似Fiddler(http://www.telerik.com/fiddler)或类似代理的内容,以确切了解回复中的内容(不仅仅是您从C#端返回的内容,因为可能还有其他内容)在离开服务器端方法后影响输出的过滤器,模块等。)
答案 1 :(得分:0)
我用来创建我传回Ajax的最终对象的5个不同的类有getter和setter,其中一个类的getter / setter标记为:
internal List<PartsMade> PList {
get { return pList; }
set { pList = value; }
}
并且应该标记为:
public List<PartsMade> PList {
get { return pList; }
set { pList = value; }
}
这导致C#中的Json序列化程序无法通过getter访问类。
将getter的访问修饰符更改为public后输出正确。