无法从JSON响应中获取数据

时间:2013-02-13 09:03:04

标签: asp.net-mvc json jquery

我承认,这是一个非常基本的问题。但我实际上厌倦了它。我只是尝试将我的当前时间以JSON格式从我的动作方法发送到视图。在视图代码中,我试图使用jQuery ajax()方法获取结果。但是在success属性中,我无法从响应中获取结果。尝试了很多方式,如response.d等。但最终几乎没有任何结果。

以下是相关的代码段:

行动方法:

 public JsonResult GetDateTest()
        {
            return Json(DateTime.Now.ToString(), JsonRequestBehavior.AllowGet);
        }
视图中的

脚本:

<script type="text/javascript">

    $(document).ready(function () {

        $("#Button1").click(function (e) {

            $.ajax({


                type: 'POST',

                url: '@Url.Action("GetDateTest","GetDate")',

                data: '{}',

                contentType: 'application/json; charset=utf-8',

                dataType: 'json',

                success: function (response) {

                    //how can I read the date here and display it on the standard //controls like a label?

                },

                error: function (e) {
                    alert("error");
                }

            });

        });

    });
</script>

帮我解决一下正确的解释

2 个答案:

答案 0 :(得分:1)

如果您想要将数据作为json,请修改您的控制器操作:

public JsonResult GetDateTest()
{
    return Json(new { date = DateTime.Now.ToString() }, JsonRequestBehavior.AllowGet);
}

添加成功功能:

success: function (response) {
    $("#someLabel").html(response.date);
},

HTML

<div id="someLabel"></div>

答案 1 :(得分:1)

来自jQuery.ajax()

  

dataType (默认值:智能猜测(xml,json,script或html))
  类型:字符串
  您希望从服务器返回的数据类型   ...
      “json”:将响应计算为JSON并返回一个JavaScript对象。

因此,在您的情况下,响应应该已经被解析为JSON并作为javascript字符串返回。

由于您没有传递任何数据,您可以使用GET的默认方法并将您的示例缩小为

$.ajax({
    url: '@Url.Action("GetDateTest","GetDate")',
    dataType: 'json',
    success: function (response) {
        console.log(response);
    },
    error: function (e) {
        alert("error");
    }
});

如果您不需要错误回调,则可以使用jQuery.getJSON()代替并进一步简化

$.getJSON('@Url.Action("GetDateTest","GetDate")',
          function (response) {
              console.log(response);
          });

更新发表评论:

要访问对象的属性,必须将其编码为JSON对象

{
    "id": 423,
    "name": "john doe",
    "salary": 50000
}

在ajax成功函数中,您可以将其作为响应的属性

进行访问
success: function(data) {
    var id = data.id;
    var name = data.name;
    var salary = data.salary;
    // do something with data properties
}