Пустой ответ от XHR - PullRequest
       2

Пустой ответ от XHR

0 голосов
/ 28 марта 2020

У меня есть таблица, которая заполняется результатами после того, как пользователь их отфильтровал. Каждый результат приводит пользователя на страницу с подробностями. Я хочу, чтобы пользователь go вернулся к результатам поиска без сброса таблицы. Кнопка «назад к результатам» на странице сведений имеет следующее значение: JavaScript:

document.getElementById('back').onclick = function(e){
const newpage = window.open("index.html?fromDetail=yes", "_self");
newpage.onload = advancedSearchFromDetail()
}

И это функция JavaScript, которая выполняется после достижения целевой страницы:

function advancedSearchFromDetail () {
    event.preventDefault()
                    var table = $('#mainTable').DataTable()

                    table.clear()

        // Get the parameters in the sessionStorage       
        const pe1id = sessionStorage.getItem('pe1id');
        const pe2id = sessionStorage.getItem('pe2id');
        const plid = sessionStorage.getItem('plid');
        const dateFrom = sessionStorage.getItem('dateFrom');
        const dateTo = sessionStorage.getItem('dateTo');
        const includeUndated = sessionStorage.getItem('includeUndated');

        const data = new FormData() 
        data.append('pe1id', pe1id)
        data.append('pe2id', pe2id)
        data.append('plid', plid)
        data.append('dateFrom', dateFrom)
        data.append('dateTo', dateTo)
        data.append('includeUndated',includeUndated)

        const oReq = new XMLHttpRequest();
        oReq.open("post", 'modules/advanced_search.xq', true);
        oReq.send(data);

        oReq.onreadystatechange = function () {
            if (oReq.readyState === XMLHttpRequest.DONE && oReq.status === 200) {
                const result = JSON.parse(oReq.responseText);
                [populate the table]

                }

              } 

Любопытно, что этот код работает при запуске с главной страницы. Все параметры есть и отправляются правильно. Ответ, тем не менее, пустой, пустой. Если дважды щелкнуть данные XHR в консоли моего браузера, чтобы открыть файл .xq с параметрами, я даже получу результаты JSON на новой странице! Что я пропускаю? Я не могу понять, почему это не работает, если есть параметры, есть вызов XHR, я получаю 200 статус и все такое.

Редактировать

Если я Запустите функцию в консоли браузера, она работает. Связано ли это с тем, что я вызываю функцию с newpage.onload = advancedSearchFromDetail() тогда? Если да, как я могу обойти это?

1 Ответ

0 голосов
/ 28 марта 2020

ОК, как я и подозревал, проблема заключается в том, как я вызываю функцию, то есть с помощью инструкции .onload. Поэтому я добавил параметр к URL-адресу, если пользователь идет со страницы подробностей, и добавил это JavaScript на главной странице:

var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('fromDetail')) {
advancedSearchFromDetail()}

И я удалил инструкцию .onload в предыдущий JavaScript. Я не уверен, что это лучшее решение, если у кого-то есть лучшее, пожалуйста, оставьте комментарий здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...