如何使用ajax c#从控制器获取数据

问题描述 投票:0回答:1

如何使用ajax从控制器获取数据。

我的控制器中的方法

 public ActionResult StartPage()
    {
        var result = CommonService.GetCurrentDateTime();
        ViewBag.DateAndTimeFromDataBase = result ;
        return View();
    }

和我的Ajax

$(document).ready(function() {
    setInterval('getServerDateTime()', 0, 1000);
});

function getServerDateTime() { 
    $.ajax({
        type: 'GET',
        cache: false,
        url: "/Login/StartPage",
        complete: function (req, textStatus) {
            var dateString = req.getResponseHeader('Date'); 
            if (dateString.indexOf('GMT') === -1) {
                dateString += ' GMT';
            }
            var date = new Date(dateString);
            $('#time-span').text(dateString);
        }
    });
};

这里我从服务器获取日期时间。我想从控制器中获取时间日期的值。并显示它们之间的差异。我是新来的。我无法在控制器中得到结果。

<div>
    <span id="time-span" class="date-time"></span>
</div>
javascript c# ajax asp.net-ajax
1个回答
0
投票

考虑到这是一个AJAX请求,您最好将数据作为JSON有效负载返回。您可以这样修改代码:

public JsonResult StartPage()
{
    var date = CommonService.GetCurrentDateTime();
    return Json(new { date });
}

这将向客户端返回如下所示的有效负载:

{
    "date": "<the value of GetCurrentDateTime() as a String>"
}

然后可以通过您的JavaScript代码轻松地访问它,如下所示:

$.ajax({
    type: 'GET',
    cache: false,
    url: "/Login/StartPage",
    complete: function (response) {
        var dateString = response.date;
        if ( !dateString ) {
            console.error('A001: date not returned from server');
        }

        if (dateString.indexOf('GMT') === -1) {
            dateString += ' GMT';
        }
        var date = new Date(dateString);
        $('#time-span').text(dateString);
    }
});

[您应该注意,.NET具有一种序列化时间戳的时髦方式,可能不适用于JS,您可能希望将日期服务器端格式化为JavaScript更易理解的格式(请参见DateTime.ToString()的选项]

© www.soinside.com 2019 - 2024. All rights reserved.