Jquery 而JSON.parse(数据)在firefox中显示“b未定义”
我的控制器,将json对象发送到视图Jquery 而JSON.parse(数据)在firefox中显示“b未定义”,jquery,json,asp.net-mvc-4,Jquery,Json,Asp.net Mvc 4,我的控制器,将json对象发送到视图 public ActionResult GetFormsByCategory(string ParentFormCategoryID) { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); List<Forms> FormsList=null; try {
public ActionResult GetFormsByCategory(string ParentFormCategoryID)
{
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
List<Forms> FormsList=null;
try
{
FormsList = some data;
}
catch (Exception ep)
{
//error log
}
return Json(javaScriptSerializer.Serialize(FormsList),JsonRequestBehavior.AllowGet);
}
我的ajax调用很成功,但是在json对象上运行时,它显示b是未定义的
$.ajax({
url: '.url', //Target URL for JSON file
contentType: 'application/json; charset=utf-8',
type: 'POST',
dataType: 'json',
async: false,
success: function (data) {
var rs = JSON.parse(data);
var FormList = "<ul style='list-style:none;display:block;' class='sub-list-forms'>";
$.each((rs), function (FormID, ViewName) {
//alert(ViewName);
FormList += "<li id='" + FormID + "'>" + ViewName + "</li><li>Reports</li>";
});
FormList += "</ul>";
$(this).append(FormList);
},
error: function (xhr, status) {
console.log(status);
}
});
我尝试了许多选择,但都没有成功
任何帮助…?首先,您不必使用JavaScriptSerializer,因为当您使用return JsonFormsList时,JsonRequestBehavior.AllowGet;它将自动序列化您的列表。但这里的主要问题是,当您使用数据类型:“json”时,响应会自动转换为json,因此您不必使用var rs=json.parsedata 如果我总结一下: 控制器:
public ActionResult GetFormsByCategory(string ParentFormCategoryID)
{
List<Forms> FormsList=null;
try
{
FormsList = some data;
}
catch (Exception ep)
{
//error log
}
return Json(FormsList,JsonRequestBehavior.AllowGet);
}
阿贾克斯:
顺便说一下,将FormsList初始化为null也可能会导致一些问题,如果控制器中出现异常,您将序列化null,根据JQuery ajax帮助页面:
JSON数据被严格解析;任何格式错误的JSON都是
拒绝,并引发分析错误。从jQuery1.9开始,一个空的
答复也被拒绝;服务器应返回null的响应
或者{}
因此,在这种情况下,最好返回null,而不是
返回JsonFormsList、JsonRequestBehavior.AllowGet
$.ajax({
url: '.url', //Target URL for JSON file
contentType: 'application/json; charset=utf-8',
type: 'POST',
dataType: 'json',
async: false,
success: function (data) {
var FormList = "<ul style='list-style:none;display:block;' class='sub-list-forms'>";
$.each((data), function (FormID, ViewName) {
//alert(ViewName);
FormList += "<li id='" + FormID + "'>" + ViewName + "</li><li>Reports</li>";
});
FormList += "</ul>";
$(this).append(FormList);
},
error: function (xhr, status) {
console.log(status);
}
});