2011-03-17 13 views
0

MVCアクションメソッドがあり、JSON形式の要素のリストをAJAXリクエストのコールバック関数に戻したいとします。しかし、JSON上の要素の配列を持つアクションメソッドのレスポンスを送信すると、コールバック関数は起動しません。AJAXリクエストのコールバックが起動しない

これは私のアクションメソッドの実装です:

public JsonResult ListAnexos(string idRelatorio) 
    { 

     EasyClinicEntities entities = new EasyClinicEntities(); 

     IQueryable<EasywebAnexos> _list = from EasywebAnexos in entities.EasywebAnexos 
               where EasywebAnexos.IdRelatorios == idRelatorio 
               select EasywebAnexos; 


      return Json(new { List = _list.ToList().ToArray() }, JsonRequestBehavior.AllowGet); 

}

私のAJAX要求コード:

function makeRefreshAnexos(relatorio) { 
    $.ajax({ 
     type: "GET", 
     url: "/Anexos/ListAnexos?idRelatorio="+relatorio, 
     success: function (jsonObject) { 

      alert(jsonObjct); 

     } 
    }); 
} 

私は上記のコードのようなJSONオブジェクトを送信しようと、コールバック関数は正常に動作します。

public JsonResult ListAnexos(string idRelatorio){ 
    return Json(new {id="just for test"},JsonRequestBehavior.AllowGet); 
} 

私はEFを使用しているとき、私は問題に実行したの.NET Framework 4.0およびMVC 2

+1

あなたはおそらく、エラーを取得しています。 Firebugをチェックしてください。 – SLaks

+1

あなたはHTTP要求が通過したことをFiddler/Firebugで観察しましたか? – WorldIsRound

答えて

1

を使用するには、JSONのリターン・クラスとしてクラスを作成し、エラーはすぐに明らかではありません。クラスにナビゲーションプロパティがある場合、JSONシリアライザはシリアライゼーションループのために失敗します。これを修正する簡単な方法は、ナビゲーションプロパティにEFデザイナーの内部ゲッターアクセサーを与えることです。

あなたはJavascriptのコードでエラーを取得する簡単な方法をしたい場合は、迅速かつ簡単にデバッグのためにこれを使用することができますに:

function makeRefreshAnexos(relatorio) { 
$.ajax({ 
    type: "GET", 
    url: "/Anexos/ListAnexos?idRelatorio="+relatorio, 
    success: function (jsonObject) { 
     alert(jsonObjct); 
    }, error: function(errorData){ 
     alert(errorData); 
    }  
});} 
関連する問題