2012-07-11 119 views
0

控制器内部服务器错误#500,而试图用jQuery Ajax和MVC

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"); 
       } 
      }); 

控制器显示JSONResult在调试,我可以看到它正在执行到最后line in controller return jsonResult;但不可见alert('Load was performed.');。 你知道它没有进入成功部分的原因是什么?服务器端没有错误。任何帮助,高度赞赏。

编辑 当我在ajax调用中添加error。它说错误500(内部服务器错误)。我如何找到这个问题?

+0

你为什么发回'JsonResult'如果直接把结果页面的DOM为HTML?尝试注释'$('#teamDetails')。html(data);'....看看会发生什么。 – nemesv 2012-07-11 14:11:28

+0

什么都没有。它只是完成了控制器的功能,并没有进入成功。有没有必要添加我的代码? – kbvishnu 2012-07-11 14:16:43

+0

从浏览器调用您的操作,而不是通过ajax调用。服务器将为您返回错误页面。或者以调试模式运行。 – devundef 2012-07-11 14:30:58

回答

3

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

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

public JsonResult TeamInfo(string teamName) 
{ 
     return Json(new TeamDataAccess()TeamInfo(teamName), JsonRequestBehavior.AllowGet); 
} 
+0

它的作品。非常感谢。但是为什么它不能在我的代码中工作? – kbvishnu 2012-07-11 15:03:29

+0

我也尝试过上述方法,但它不起作用。你可以告诉你有什么区别? – kbvishnu 2012-07-11 15:04:42

+0

它会在“敏感信息...”或其他信息上返回相同的错误吗? – devundef 2012-07-11 15:08:30

1

$.ajax的默认请求类型是GET但默认GET请求不允许JsonResult所以你需要excplicitly让他们与JsonRequestBehavior属性:

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

return jsonResult; 

或者你可以用ajax开机自检呼叫使用type: 'POST'

注意:目前还不清楚什么是把返回的JSON直接进入DOM与线你的目标$('#teamDetails').html(data);

+0

好点@nemesv :: JsonRequestBehavior.AllowGet – devundef 2012-07-11 14:29:44

+0

我试过那个。但仍然不是。让我再检查一次。在把它放入div之前,我需要创建一些HTML。 – kbvishnu 2012-07-11 14:31:34

+0

请参阅我的更新评论 – kbvishnu 2012-07-11 14:56:33

相关问题