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リクエストは許可されていないため、 JsonRequestBehavior プロパティJsonResultを使用して明示的に許可する必要があります。

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

return jsonResult;

または、を使用してajax呼び出しでPOSTすることができますtype: 'POST'

注:返されたJSONを次の行を使用してDOMに直接配置することで、目標が何であるかはまだ明確ではありません。$('#teamDetails').html(data);

于 2012-07-11T14:27:20.327 に答える