如何使用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>
考虑到这是一个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()
的选项]