0

我承认,这是一个非常基本的问题。但我实际上厌倦了它。我只是想将我的当前时间以 JSON 格式从我的操作方法发送到视图。在视图代码中,我尝试使用 jQuery ajax() 方法获取结果。但是在成功属性中,我无法从响应中获取结果。尝试了多种方法,例如 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>

用正确的解释帮助我弄清楚

4

2 回答 2

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>
于 2013-02-13T09:08:13.377 回答
1

来自jQuery.ajax()

dataType(默认值:Intelligent Guess(xml、json、script 或 html))
类型:String
您期望从服务器返回的数据类型。
...
“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
}
于 2013-02-13T09:10:54.990 回答