2011-07-17 26 views
0

mvcのJsonResultを介してサーバーからデータを返そうとしています。しかし、私のコードを拾うことができないいくつかの奇妙な理由のために静かに失敗します。クライアント側の最初のアラートは成功し、出力は「ここにあります」が表示されますが、2番目のアラートは表示されません。どうして?

//Server Side 
    public JsonResult GetWeightsData() 
    { 
      PerfomanceMeasureDBDataContext db = new PerfomanceMeasureDBDataContext(); 
      return this.Json(db.WeightMearsures.Select(x => new { Day =x.Date.ToString(), Weight = x.Weight })); 
    } 


    //Client Side 
    $(function() { 
     $('#ShowChart').click(function() { 
      alert("Got Here"); 
      $.getJSON("/Home/GetWeightsData", null, function (data) { 
       alert(data[0].Day); 
       var dates = new Array(); 
       var weights = new Array(); 
       for (var i = 0; i < data.length; i++) { 
        dates[i] = data[i].Day; 
        weights[i] = data[i].Weight; 
        alert(dates[i]); 
       } 
       showChart(dates, weights); 
      }); 
     }); 
    }); 
+0

'success'コールバックに警告を表示し、それが表示されるかどうか確認してください。 – Rafay

答えて

2

HTTP GETリクエストは、MVC2 +のJsonResultによってデフォルトで拒否されるため、コードにも問題が発生する可能性があります。あなたはブラウザから "/ Home/GetWeightsData"アクションを直接ブラウジングしようとしましたか?

試してみてください。

return this.Json(db.WeightMearsures.Select(x => new { Day =x.Date.ToString(), Weight = x.Weight }), JsonRequestBehaviour.AllowGet); 

それはここ http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonrequestbehavior%28VS.100%29.aspx

+0

ありがとうございましたJsonRequestBehaviour.AllowGetが追加されました。 –

0

Firebugを使用してコントローラメソッドから何が出力されているか確認しましたか?そのlinqの表現は私には奇妙に思えます(オブジェクトは間違っています)が、データを取得していると確信しています。

0

.error関数を追加して、呼び出しに問題がないかどうかを確認します。

jQuery.getJSON docsを参照してください。

1

わからないイムある理由が、JsonRequestBehavior.AllowGet

public JsonResult GetWeightsData() 
{ 
     PerfomanceMeasureDBDataContext db = new PerfomanceMeasureDBDataContext(); 
     return this.Json(db.WeightMearsures.Select(x => new { Day =x.Date.ToString(), Weight = x.Weight }),JsonRequestBehavior.AllowGet); 
} 
0

代わりの$.getJSON()にあなたが持っているJSONにアクセスしながら、$.ajax()を試してみてください - エラーハンドラを追加する

$.ajax({ 
    url: '/Home/GetWeightsData', 
    type: 'post', // Use post, not get 
    dataType: 'json', 
    success:function(){ 
     alert(data[0].Day); 
     var dates = new Array(); 
     var weights = new Array(); 
     for (var i = 0; i < data.length; i++) { 
      dates[i] = data[i].Day; 
      weights[i] = data[i].Weight; 
      alert(dates[i]); 
     } 
     showChart(dates, weights); 
    }, 
    error:function(jqXHR, textStatus, errorThrown){ 
     alert(errorThrown); 
    } 
});