Я создаю функцию, которая проверяет срок действия кредитной карты и выводит предупреждение. Для этого я подсчитал его с помощью моей новой Date(), однако я понял, что, поскольку JS будет работать на стороне клиента, он отобразит дату машинного компьютера.
Я хочу получить дату со стороны сервера, а затем выполнить проверку кредитной карты на стороне клиента в угловом формате. Как я могу это сделать?
Самый простой способ - использовать https://docs.angularjs.org/api/ng/service/$http для создания запроса AJAX на бэкэнд. Перейдите по ссылке, чтобы увидеть другие примеры, или просто используйте следующее:
$http.get('/someUrl').then(successCallback, errorCallback);
function successCallback(response) {
// server side date is returned here:
var serverAnswer = response.data;
...
}
function errorCallback(response) {
...
}
Не забудьте указать необходимый формат возвращаемых данных (см. Раздел "Настройка заголовков HTTP- страниц на странице ссылок") или используйте
$http.get('/someUrl', config).then(...)
для изучения работы в $ http.
Также вы можете использовать https://docs.angularjs.org/api/ngResource/service/$resource для того же самого (его использование более рекомендуется, чем использование $ http, но до вас).
У нас была такая же проблема в моем предыдущем проекте, и мы сделали простую функцию об этом. В качестве параметра требуется строка, которая поступает из back-end - новой Date().
var convertToDateWithoutClientOffset = function(dateString) { return new Date(dateString.substr(0, 4), dateString.substr(5, 2) - 1, dateString.substr(8, 2), dateString.substr(11, 2), dateString.substr(14, 2), dateString.substr(17, 2)); };
Это уродливо, но оно работает. Например, у нас есть 2016-04-18A11:00:00.000
качестве параметра, и функция вернется Mon Apr 18 2016 11:00:00 GMT+0300 (FLE Daylight Time)
, так как я нахожусь в +3 часах Часовой пояс,