2012-07-11 79 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

相關問題