0

控制器

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 调用控制器

$.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.');不可见。你知道它没有进入成功部分的原因是什么吗?服务器端没有错误。非常感谢任何帮助。

编辑 当我添加errorin ajax 调用时。它显示错误 500(内部服务器错误)。我如何找到这个问题?

4

2 回答 2

3

您不需要使用 JavaScriptSerializer 制作所有的序列化内容。

您的操作方法可能如下所示:

 public JsonResult TeamInfo(string teamName)
 {
      return Json(new TeamDataAccess()TeamInfo(teamName), JsonRequestBehavior.AllowGet); 
 }
于 2012-07-11T14:27:41.303 回答
1

$.ajax的默认请求类型是GET,但默认情况下不允许 GET 请求,JsonResult因此您需要使用JsonRequestBehavior 属性明确允许它们:

JsonResult jsonResult = 
    new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
jsonResult.Data = sJSON;

return jsonResult;

或者您可以使用 ajax 调用发布type: 'POST'

注意:仍然不清楚将返回的 JSON 直接放入 DOM 的目标是什么$('#teamDetails').html(data);

于 2012-07-11T14:27:20.327 回答