#javascript #html #jquery #asp.net-mvc #session
#javascript #HTML #jquery #asp.net-mvc #сеанс
Вопрос:
Я работаю над страницей, когда пользователь отправляет данные и извлекает html-данные, содержащие гиперссылки. Теперь, когда пользователь нажимает на ссылку, он переходит на другую страницу, а когда пользователь нажимает кнопку возврата браузера, я хочу показать ранее отображенные данные html. Чтобы добиться этого, я попытался сохранить значение в сеансе и получить его, когда пользователь нажимает кнопку возврата браузера.
Но я сталкиваюсь с проблемами
-
Я попытался захватить кнопку возврата браузера и отобразить сохраненную переменную сеанса, и я не уверен, почему это не срабатывает.
$(window).on(‘hashchange’, function () { $(«#spanId»).html(«test»); });
-
Данные Html, хранящиеся в переменной сеанса, отображаются неправильно, например, «<» отображается как «amp; lt», и все данные отображаются в виде строки вместо содержимого html.
$(document).ready(function () { $("#spanId").html("@Session["Data"]"); $("#btnSubmit").click(function () { var data = { "Date": $.datepicker.formatDate("mm-dd-yy", DateVal), "Type": $('#type').val(), } $.ajax({ type: 'POST', dataType: "json", contentType: "application/json; charset=utf-8", data: JSON.stringify(data), url: '@Url.Action("GetReportdata", "Reports")', success: function (result) { $("#spanId").html(content); }, error: function (xhr, ajaxOptions, thrownError) { } }); }); }); Please let me know if there is any other way to handle this and help me resolves this issue.
Ответ №1:
Может быть другой способ решения этой проблемы на стороне сервера, но это должно сработать.
$(document).ready(function () {
$("#spanId").html(decodeHtml("@Session["Data"]"));
$("#btnSubmit").click(function () {
var data = {
"Date": $.datepicker.formatDate("mm-dd-yy", DateVal),
"Type": $('#type').val(),
}
$.ajax({
type: 'POST',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
url: '@Url.Action("GetReportdata", "Reports")',
success: function (result) {
$("#spanId").html(decodeHtml(content));
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
});
});
function decodeHtml(encodedHtml) {
return encodedHtml.replace(/amp;amp;/g,'amp;')
.replace(/amp;</g,'<').replace(/amp;>/g,'>');
}
Комментарии:
1. Спасибо @natel, моя вторая проблема решена. Все еще пытаюсь исправить проблему, когда пользователь нажимает кнопку возврата браузера
Ответ №2:
Я нашел событие для обработки кнопки возврата браузера:
if (window.performance amp;amp; window.performance.navigation.type ==
window.performance.navigation.TYPE_BACK_FORWARD) {
$("#spanId").html("@Session["Data"]");
}
Это можно использовать для повторного заполнения данных.
Комментарии:
1. Удивительно, не знал об этом.
window.performance amp;amp; window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD