Json的结果一无所获

时间:2012-02-19 20:30:24

标签: asp.net-mvc json

我使用此代码访问我的服务器(MVC),这工作正常。在结果“数据”({“Id”:30,“描述”:“样本照片”,“名称”:“第一次Galery”})我尝试获取属性data.Name,这只是什么都不返回,是什么这段代码中的问题?

的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;
}

4 个答案:

答案 0 :(得分: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请求。

答案 1 :(得分:2)

您可以尝试将$ .post()中的dataType设置为“json”。查看[文档]中的示例。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检查应用程序服务器的确切响应。

答案 2 :(得分:1)

您还可以在使用JSON.parse(result)返回JSON数据后解析它。

答案 3 :(得分:-1)

尝试使用不同的方式访问数据。使用数据[“名称”]