首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >动态更改Ajax请求的url

动态更改Ajax请求的url
EN

Stack Overflow用户
提问于 2019-11-02 02:40:57
回答 5查看 1.9K关注 0票数 1

我的网页上有一个普通的数据表,看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {

    var table = $('#mydb').DataTable({
        "serverSide": true,             
        "ajax": "/myapi/?item=free&format=datatables",
        "columns": [

            {data: "item",
            {data: "Price"},

        ]
    });
    setInterval( function () {
    table.ajax.reload();
}, 10000 );
});

此表每10秒刷新一次,从我的数据库中检索最新值。

现在,我想添加一个按钮来动态地更改网页的内容,这样它就可以从?item=taken而不是?item=free检索值,而无需刷新页面。

以下是我尝试过的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myvar = 'item=free'

function ChangeVar(){
        myvar = 'item=taken'

    }

$(document).ready(function() {

    var table = $('#mydb').DataTable({
        "serverSide": true,             
        "ajax": "/myapi/?'+ myvar + '&format=datatables",
        "columns": [

            {data: "item",
            {data: "Price"},

        ]
    });
    setInterval( function () {
    table.ajax.reload();
}, 10000 );
});

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button onclick="ChangeVar()" name="button5" type="submit" class="btn btn-primary">See taken items</button>

我添加了一个指向函数ChangeVar()的按钮,函数应该更改主变量的名称,这是在ajax请求中使用的。这没有起作用,可能是因为我没有正确地使用变量的作用域,而且我认为它不会工作,因为Ajax是无时的,所以我需要添加更多内容。

有人能告诉我一个解决这个问题的方法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-11-04 17:45:52

DataTables有自己的方法来动态地更改ajax:table.ajax.url('URL')。这样你就不用每次都毁了这个物体。

我已经做了下面的例子,所以每个间隔的间隔都会重新加载。但是,当使用table.ajax.url('')时,您可以链接.load()方法来立即检索数据。

参见此示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {
  let test = $('#example').DataTable({
    ajax: {
      url: 'https://jsonplaceholder.typicode.com/posts',
      dataSrc: ''
    },
    columns: [{
        data: 'userId'
      },
      {
        data: 'id'
      },
      {
        data: 'title'
      }
    ]

  });


  changeVar = function() {
    test.ajax.url("https://jsonplaceholder.typicode.com/albums");
  }

  setInterval(function() {
    test.ajax.reload();
    console.log("Interval");
  }, 10000);

});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.11/css/jquery.dataTables.min.css" rel="stylesheet" />

<body>
  <button onclick="changeVar()" name="button5" type="submit" class="btn btn-primary">See taken items</button>
  <br><br>
  <div id="container">
    <table id="example" class="display" cellspacing="0" width="100%">
      <thead>
        <tr>
          <th>ID</th>
          <th>Title</th>
          <th>Body</th>
        </tr>
      </thead>
    </table>
  </div>

</body>

票数 4
EN

Stack Overflow用户

发布于 2019-11-04 19:25:36

您的代码有一个问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"ajax": "/myapi/?item=free&format=datatables",

定义ajax时,URL将保存在表实例上,因此修改变量myvar将无法更改表实例中的url。但是Datatable允许您通过API table.ajax.url(newURL).更改ajax url。我还修改了变量和函数的作用域,下面的脚本将工作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myvar = 'item=free';
var table;
function ChangeVar(){
    myvar = 'item=taken'
    table.ajax.url("/myapi/?'+ myvar + '&format=datatables");
}

$(document).ready(function() {

    table = $('#mydb').DataTable({
        "serverSide": true,             
        "ajax": "/myapi/?'+ myvar + '&format=datatables",
        "columns": [
            {data: "item",
            {data: "Price"},

        ]
    });
    setInterval( function () {
        table.ajax.reload();
    }, 10000 );
});

不破坏表并重新创建新表,这不利于性能

票数 1
EN

Stack Overflow用户

发布于 2019-11-05 03:11:35

代码中有语法错误,您使用的是单引号而不是双引号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"ajax": "/myapi/?'+ myvar + '&format=datatables"

所以js将myvar作为字符串而不是变量。试一试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 "ajax": "/myapi/?"+ myvar + "&format=datatables"

另外,你在这里漏掉了一个结束括号,{data: "item"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var table = $('#mydb').DataTable({
    "serverSide": true,             
    "ajax": "/myapi/?"+ myvar + "&format=datatables",
    "columns": [

        {data: "item"},
        {data: "Price"},

    ]
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58670298

复制
相关文章
如何在 Windows 10 中移除 Internet Explorer 浏览器 如何通过控制面板删除 Internet Explorer 浏览器通过 PowerShell 删
现在 Internet Explorer (IE)已经过时了,可以通过控制面板移除这个古老但是依然是一个伟大的浏览器
林德熙
2019/03/13
1.9K0
Broadband Networks and Internet Architecture 宽带和Internet架构
-All clouds must be connected to a network(Internet or LAN)
愷龍
2022/09/26
6980
Broadband Networks and Internet Architecture 宽带和Internet架构
Internet与中国
Internet与中国 Internet最早来源于美国国防部高级研究计划局ARPA建立的ARPANet,1969年投入运行。1983年,ARPAnet分裂为两部分:ARPAnet和纯军事用的MILNET。当年1月,ARPA把TCP/IP协议作为ARPAnet的标准协议,这个以ARPAnet为主干网的网际互联网便被称为Internet。1986年,美国国家科学基金会建立计算机通信网络NSFnet。此后,NSFNet逐渐取代ARPANet在Internet的地位。1990年,ARPANet正式关闭 北京时间19
咻一咻
2020/05/29
1.1K0
如何通过Samba共享Linux文件夹
Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件。
静默虚空
2022/05/10
7.8K0
CIFS:通用 Internet 文件系统 (Common Internet File System)
通用网际文件系统(CIFS)是微软服务器消息块协议(SMB)的增强版本,是计算机用户在企业内部网和因特网上共享文件的标准方法。CIFS 通过定义一种与应用程序在本地磁盘和网络文件服务器上共享数据的方式相兼容的远程文件访问协议使之能够在因特网上进行协作。CIFS 在 TCP/IP 上运行,利用因特网上的全球域名服务系统(DNS)增强其可扩展性,同时为因特网上普遍存在的慢速拨号连接优化。CIFS 利用重定向包可以通过网络发送至远端设备,而重定向器也利用 CIFS 向本地计算机的协议栈发出请求。
用户4766018
2022/08/19
7620
Internet of Everything与Internet of Things:有什么区别?
Internet-of-Everything-vs-Internet-of-Things-Whatu2019s-the-Difference_-1536x944_副本.jpg
用户4122690
2020/07/13
1.2K0
Internet of Everything与Internet of Things:有什么区别?
windows server 设置内网访问共享文件
通过内网共享文件,需要启用网络发现 image.png 想要启用网络发现,需要开启以下服务 Function Discovery Resource Publication SSDP Discovery UPnP Device Host image.png image.png 开启以上三个服务,就可以启用网络发现 image.png 网络开启后,就可以发现同一地区的内网共享文件,最总效果如下 image.png
1011419860
2020/06/26
2.7K0
Flutter - 检查 Internet 连接示例[Flutter专题14]
有时,您可能想要检查运行您的应用程序的设备的互联网连接。如果应用程序是使用 Flutter 开发的,您可以阅读本教程中的示例。
徐建国
2021/12/07
2.1K0
通过Python计算一个文件夹大小
在进行计算一个文件夹内容大小的时候,我们要考虑文件夹内都有什么内容,可能都是一个一个的单文件,也有可能都是子文件夹,或者二者都有,既然要计算整个文件夹的大小,我们当然要计算每一个文件的大小以及每一个子文件夹下的每一个子文件。计算每一个文件的大小我们肯定都可以计算到,或者如果我们知道一个文件夹内有子文件夹的数量,一个个遍历子文件夹的内容进行计算,但是如果我们不知道这个文件夹内到底有多少子文件夹呢?所以,根据我的思路,可以使用递归的方式进行计算每一个文件及每一个字文件夹的大小,但有个弊端就是在python中递归有最大递归层数,说不定会有哪个变态套了N多层文件夹,这样的话我们的程序可能会抛出异常,所以我们还要做一定的异常处理,总之闲话少说,见代码吧。代码如下:
py3study
2020/01/19
1.5K0
共有フォルダーアクセスできない windows11(不能访问共享文件夹)
3,Regeditを使用してLocalAccountTokenFilterPolicyの値を作成(没行)
刀枪不入de王二花
2022/07/14
5020
共有フォルダーアクセスできない windows11(不能访问共享文件夹)
C# 通过 probing 指定 dll 寻找文件夹
在很大的项目开发,会发现项目引用的 dll 会很多,我想要按照不同的功能,将不同的 dll 放在不同的文件夹
林德熙
2022/08/04
7830
C# 通过 probing 指定 dll 寻找文件夹
在很大的项目开发,会发现项目引用的 dll 会很多,我想要按照不同的功能,将不同的 dll 放在不同的文件夹
林德熙
2019/03/13
2K0
广域网与Internet
3.1 广域网络技术 1. (1)广域网:局域网之间通过网桥、网关或路由器等网络连接设备进行连接而形成的大型网络。同类型局域网络可用网桥连接,也可以用网管或路由器连接;异类型的局域网则必须用网关或路由器连接。 (2)广域网络的覆盖范围可从几十千米、几百千米到数万千米。根据网络的覆盖范围可分为城域网络、行业网络、国家或地区网络以及Internet (3)城域网:又称城市网络,其覆盖范围是一个城市,如北京市城域网。 (4)行业网:是覆盖行业的广域网络。如面向我国金融系统的金桥网。 (5)国家或地区网:其网络覆盖
用户1173509
2018/01/17
8560
Android:网络编程及Internet应用
HttpURLConnection urlConn =(HttpURLConnection)url.openConnection();
提莫队长
2019/03/01
1K0
通过SSHFS远程挂载文件夹,方便远程coding!
很多情况下,从服务器传输文件会得很麻烦。想象一下开发使用场景,您正本地为服务器编写软件,并自己将脚本重复上传到服务器进行测试。这可能会变得非常麻烦。但是,有一种方法可以将VPS文件系统挂载到本地计算机上,这样您就可以动态地进行更改并将您的服务器的文件。在本文中,我们将向您展示如何做到这一点。
黑色技术
2018/07/27
27K0
How to Watch TV Channels on the Internet?
We live during a time where innovation is creating and progressing quickly. Cell phones, tablets, PCs and the Web show up in pretty much every part of our lives.
用户10252107
2022/12/07
8540
How to Watch TV Channels on the Internet?
通过.htaccess 让WordPress 的上传文件夹更安全
WordPress本身的架构就很安全,但是我们可以做一些优化,让WordPress 更安全。WordPress的图片等文件的上传路径默认是wp-content/uploads/ ,为了防止被别有用心的人通过这个上传文件夹上传一些文件非法获取权限,我们可以用.htaccess文件让你的wordpress的上传文件夹更安全。 创建一个文件并命名为.htaccess, 并写下面的代码: <Files ~ ".*..*"> Order Allow,Deny Deny from all </Files
Jeff
2018/01/19
1.2K0
Go Mutex:保护并发访问共享资源的利器
Go 语言以 高并发 著称,其并发操作是重要特性之一。虽然并发可以提高程序性能和效率,但同时也可能带来 竞态条件 和 死锁 等问题。为了避免这些问题,Go 提供了许多 并发原语,例如 Mutex、RWMutex、WaitGroup、Channel 等,用于实现同步、协调和通信等操作。
陈明勇
2023/04/24
5680
Go Mutex:保护并发访问共享资源的利器
如何设置共享文件夹?
比如文档、图片、视频等。小编认识的好多人别说设置共享了,甚至连怎么添加已有的共享资源都不会,快来一起学习下吧!
简单并不简单
2019/07/05
12.6K1
点击加载更多

相似问题

-通过共享URL访问共享文件夹

12

powershell -如何通过SFTP访问共享文件夹

12

通过Azure混合连接访问共享文件夹

21

在windows服务中通过网络访问共享文件夹

14

在adobe air中通过网络访问共享文件夹

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文