首页 > 解决方案 > 如何使用ajax c#从控制器获取数据

问题描述

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

我的控制器中的方法

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

和我的阿贾克斯

$(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>

标签: javascriptc#ajaxasp.net-ajax

解决方案


考虑到这是一个 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()


推荐阅读