我有一个表格,在用户过滤后由结果填充。每个结果都会将用户带到一个详细信息页面。我希望用户在不重置表格的情况下返回搜索结果。详细信息页面上的“返回结果”按钮包含以下 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 回答
慕容708150
TA贡献1831条经验 获得超4个赞
好的,正如我所怀疑的,问题似乎是我如何调用该函数,即通过 .onload 指令。因此,如果用户来自“详细”页面,我在 URL 中附加了一个参数,并在主页中添加了这个 JavaScript:
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('fromDetail')) {
advancedSearchFromDetail()}
而且我已经删除了之前 JavaScript 中的 .onload 指令。我不确定这是最好的解决方案,如果有人有更好的解决方案,请在此处发表评论。
添加回答
举报
0/150
提交
取消
