【发布时间】:2023-03-25 18:32:01
【问题描述】:
我有一个表格,在用户过滤后由结果填充。每个结果都会将用户带到一个详细信息页面。我希望用户在不重置表格的情况下返回搜索结果。详细信息页面上的“返回结果”按钮包含以下 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() 调用该函数的事实有关?如果是,我该如何解决?
【问题讨论】:
标签: javascript datatable xmlhttprequest