控制器
public JsonResult TeamInfo(string teamName)
{
teamDA = new TeamDataAccess();
var teamInfo = teamDA.TeamInfo(teamName);
System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
string sJSON = oSerializer.Serialize(teamInfo);
JsonResult jsonResult
=new JsonResult(){ JsonRequestBehavior = JsonRequestBehavior.AllowGet };
jsonResult.Data = sJSON; // first i give this.
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jsonResult;
}
从jQuery调用Controller
$.ajax({
url: 'Team/TeamInfo/' + teamName,
success: function (data) {
$('#teamDetails').html(data);
alert('Load was performed.');
$("#dialog-modal").dialog("open");
}
});
调试时我可以看到它一直执行到控制器return jsonResult;
的最后一行但是alert('Load was performed.');
不可见。
你知道它不成功的原因是什么部分。服务器端没有错误。任何帮助都非常感谢。
修改
当我在ajax调用中添加error
时。它说错误500(内部服务器错误)。我如何找到这个问题?
答案 0 :(得分:3)
您不需要使用JavaScriptSerializer制作所有序列化内容。
您的操作方法可能如下所示:
public JsonResult TeamInfo(string teamName)
{
return Json(new TeamDataAccess()TeamInfo(teamName), JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:1)
$.ajax的默认请求类型为GET
,但默认情况下JsonResult
不允许GET请求,因此您需要使用JsonRequestBehavior属性明确允许它们:
JsonResult jsonResult =
new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
jsonResult.Data = sJSON;
return jsonResult;
或者您可以使用type: 'POST'
注意:使用行$('#teamDetails').html(data);