Angel丶守护&雪之源 2023-08-08 13:42 采纳率: 22%
浏览 4
已结题

Tabulator插件远程分页发送的请求,怎么抓取响应标头的数据?

项目用Tabulator插件制作一个自定义列的表格组件,现在需要远程获取表格数据,但是使用时发送完请求后仅返回了表格的数组数据,没有返回total,但是在响应标头中有total数据,我该怎么获取?

let opts = {
        ajaxURL:"/api/vc/form_data?query[form_id]=2072&query[type]=form",
        ajaxConfig: {
                method:"GET",
                headers:{
                        'X-API-Nonce': JSON.parse(window.localStorage.getItem('nonce')).data,
                        "Content-Type":'application/x-www-form-urlencoded',
                }
        },
        ajaxParams:{                                    //请求参数
                with: 1,
                paged: 1,
                lang: 'zh',
        },
        ajaxResponse: function(url, params, response){
                console.log(response)
                return response
        },
        layout: "fitColumns",
        pagination: 'remote',
        paginationSizeSelector: [5, 10, 15, 20],
        paginationSize: 10,
        paginationCounter:function(pageSize, currentRow, currentPage, totalRows, totalPages){
                return "共 " + totalRows +  " 条数据 ";     //表尾数据总数
        },
        columns:columns,
}

发送请求后的截图:
数据:

img

响应标头:

img

我需要抓取响应标头的X-API-Total字段的值用于总行数显示以及总分页数数制作,我该怎么获取

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-08 16:10
    关注

    【以下回答由 GPT 生成】

    问题分析:

    根据问题描述,需要从Tabulator插件的远程分页请求中获取响应标头的数据X-API-Total。但是Tabulator插件的ajaxResponse只返回响应的数据,无法直接获取响应标头的数据。

    解决方案:

    要获取响应标头的数据,需要使用XMLHttpRequest对象发送请求,并自己处理响应标头。下面给出一个可能的解决方案:

    1. 创建一个新的XMLHttpRequest对象,并设置请求的方法为GET,如下所示:
    let xhr = new XMLHttpRequest();
    xhr.open('GET', "/api/vc/form_data?query[form_id]=2072&query[type]=form", true);
    
    // 设置请求头
    xhr.setRequestHeader("X-API-Nonce", JSON.parse(window.localStorage.getItem('nonce')).data);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    
    // 设置请求的回调函数
    xhr.onload = function() {
      if (xhr.status === 200) {
        // 请求成功,处理响应数据
        let response = JSON.parse(xhr.responseText);
        // 获取响应标头的数据
        let total = xhr.getResponseHeader("X-API-Total");
    
        // 打印响应数据和响应标头的数据
        console.log(response);
        console.log(total);
    
        // 使用Tabulator插件创建表格
        let opts = {
          // 设置表格的数据
          data: response,
          // 设置表格的总行数和总分页数
          ajaxResponse: function(url, params, response){
              response['total'] = total;
              return response;
          },
          layout: "fitColumns",
          pagination: 'remote',
          paginationSizeSelector: [5, 10, 15, 20],
          paginationSize: 10,
          paginationCounter:function(pageSize, currentRow, currentPage, totalRows, totalPages){
              return "共 " + totalRows + " 条数据 ";     //表尾数据总数
          },
          columns:columns,
        };
    
        // 创建Tabulator表格
        let table = new Tabulator("#example-table", opts);
      } else {
        // 请求失败,打印错误信息
        console.error(xhr.statusText);
      }
    };
    
    // 发送请求
    xhr.send();
    

    请注意,上面的代码只是一个示例,并未经过测试和完整的验证。

    总结:

    要从Tabulator插件的远程分页请求中获取响应标头的数据,需要使用XMLHttpRequest对象发送请求,并在请求成功后通过xhr.getResponseHeader("X-API-Total")方法获取响应标头的数据,然后将其传递给Tabulator插件的ajaxResponse属性,以便在表格中显示总行数和总分页数。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月9日
  • 创建了问题 8月8日

悬赏问题

  • ¥20 python爬虫遇到空文本取不出来
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入