Проблема с извлечением данных, когда пользователь нажимает кнопку возврата браузера в MVC5

#javascript #html #jquery #asp.net-mvc #session

#javascript #HTML #jquery #asp.net-mvc #сеанс

Вопрос:

Я работаю над страницей, когда пользователь отправляет данные и извлекает html-данные, содержащие гиперссылки. Теперь, когда пользователь нажимает на ссылку, он переходит на другую страницу, а когда пользователь нажимает кнопку возврата браузера, я хочу показать ранее отображенные данные html. Чтобы добиться этого, я попытался сохранить значение в сеансе и получить его, когда пользователь нажимает кнопку возврата браузера.

Но я сталкиваюсь с проблемами

  1. Я попытался захватить кнопку возврата браузера и отобразить сохраненную переменную сеанса, и я не уверен, почему это не срабатывает.

    $(window).on(‘hashchange’, function () { $(«#spanId»).html(«test»); });

  2. Данные 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