为了账号安全,请及时绑定邮箱和手机立即绑定

来自 XHR 的空响应

来自 XHR 的空响应

侃侃尔雅 2022-06-05 09:43:36
我有一个表格,在用户过滤后由结果填充。每个结果都会将用户带到一个详细信息页面。我希望用户在不重置表格的情况下返回搜索结果。详细信息页面上的“返回结果”按钮包含以下 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 指令。我不确定这是最好的解决方案,如果有人有更好的解决方案,请在此处发表评论。


查看完整回答
反对 回复 2022-06-05
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号