Как получить данные с контроллера с ajax c# - PullRequest
0 голосов
/ 27 апреля 2020

Как получить данные с контроллера с помощью 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>

1 Ответ

0 голосов
/ 28 апреля 2020

Учитывая, что это запрос 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())

...