2012-02-19 6 views
3

私はこのコードを使用して私のサーバー(MVC)にアクセスしています。結果 "data"({"Id":30、 "Description": "サンプルPhotos"、 "Name": "First Galery"})プロパティのデータを取得しようとしました。このコードの問題?Json結果は何もありません

はJavaScript

$(function() { 
     $('#UserGaleries_').change(function() { 
      try { 

       if ($(this).val() == -1) { 

        $('#NameGaleriesEdit').val(''); 
        $('#DescriptionGaleriesEdit').val(''); 

       } 
       else { 
        $.post('/UserGaleries/ChangeCategorie', 
         { selectedID: $(this).val() }, 
         function (data) { 
          alert(data.Name); //Nothing 
          $('#NameGaleriesEdit').val(data.name); 
          $('#DescriptionGaleriesEdit').val('asdf'); 

         }); 
       } 
      } catch (e) { 
       alert(e); 
      } 

     }); 
    }); 

MVC

[Serializable] 
public class ResponsetModel 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
    public string Name { get; set; } 
} 

public JsonResult ChangeCategorie(int selectedID) 
{ 
    DbLayer.UserGaleriesManager uc = new DbLayer.UserGaleriesManager(); 
    DbLayer.Models.UsersGalery cat = uc.GetGaleriesById(selectedID); 

    ResponsetModel retValue = new ResponsetModel() 
    { Id = cat.Id, Name = cat.Title, Description = cat.Description }; 

    JsonResult oView = Json(retValue, "text/plain", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet); 
    return oView; 
} 
+0

あなたのChangeCategoriesアクションメソッドには、HttpPost属性 – Jon

+1

@Jonが必要です。それは間違っている。 – gdoron

+0

JavaScriptの謎を知りませんが、代わりにdata()。nameを呼び出してみましたか? –

答えて

3

あなたが予想されるコンテンツの種類を指定せずにpost()メソッドを使用すると、dataは単純にJSONを(JavaScriptオブジェクトではなく)を含む文字列になります。それを確認するにはalert(data)を実行してください。

$.ajax({ 
    url:'/UserGaleries/ChangeCategorie', 
    data:{ selectedID: $(this).val() }, 
    method:"POST", 
    dataType:"json", 
    success:function (data) { 
     alert(data.Name); 
    } 
}); 

として投稿

書き換えは別の方法としては、$.getJSON()を使用することができますが、私はあなたはそれがPOSTリクエストを実行させることができるかどうかわかりません。

+0

ありがとう、これはうまく動作します。 – AFetter

2

$ .post()のdataTypeを "json"に設定できますか? [documentation]の例を確認してください。 1

また、data.Nameではなく、data.nameです。

このような何か:

$.post('/UserGaleries/ChangeCategorie', 
              { selectedID: $(this).val() }, 
              function (data) { 
                            alert(data.Name); 
                            $('#NameGaleriesEdit').val(data.Name); 
                            $('#DescriptionGaleriesEdit').val('asdf'); 

              }, "json"); 

重要勧告:それはあなたのアプリケーションサーバから正確な応答であるかどうか確認するためにFirebugを使用してください。

-1

別の方法でデータにアクセスしてみてください。データ["名前"]を使用

+1

これは違いがないと思う.... data ["Name"]とdata.Nameは、dataTypeがjsonならば同じでなければならない。 –

1

返されたJSONデータは、JSON.parse(result)を使用して解析することもできます。

関連する問題