当前位置: 首页 > 知识库问答 >
问题:

使用新参数重新加载Ajax请求

吴兴国
2023-03-14

我通过AJAX请求从数据库中获取表数据。我需要更改AJAX请求中的数据参数并刷新表。

我正在用命令刷新表格

$('#table1').DataTable().ajax.reload();

我有以下代码

$('#table1').DataTable({

    /* SERVER SIDE PROCESSING */
                "serverSide": true,
                "ajax":
                    {
                        "url": "Home/Search",
                        "type": "POST",
    
                        "data": {
                            'searchType': GetSearchType(),
                            'searchText': GetSearchText()
                            //'searchType': $.mynamespace.searchType
                            //'searchText': $.mynamespace.searchText
                            //'searchType': localStorage.getItem("searchType"),
                            //'searchText': localStorage.getItem("searchText"),
                        }
                    }
            });

但是在AJAX重新加载之后,会向服务器发送原始请求,并忽略新的参数值。我试图通过函数、全局变量和浏览器存储将数据传递给请求,但这些方法都不起作用。在互联网上,我找到了解决问题的方法

aoData.push() 

功能,但我不知道如何使用它。

我的jQuery数据表版本是1.10.7。

我还尝试使用以下代码销毁和重新创建表:

$('#table1').DataTable({
        "ajax":
            {
                "url": "Home/Search",
                "type": "POST",

                "data": {
                    'searchType': GetSearchType(),
                    'searchText': GetSearchText()
                }
            },
        "destroy" : true
    }).ajax.reload();

但我收到了错误信息:

DataTables警告:表id=表1-Ajax错误(http://www.datatables.net/manual/tech-notes/7)

参数字典包含一个空条目,用于不可为空的类型System的参数'绘制'。国际

共有3个答案

方心思
2023-03-14

好的,我找到了解决方案,在重新初始化表的过程中,需要再次指定所有设置,否则它们将从默认设置中获取。最后的代码是

$('#table1').DataTable({
            "iDisplayStart": 0,
            "iDisplayLength": 50,
            "bPaginate": true,
            "bSort": false,
            "serverSide": true,
             /* and all others settings others than default */
        "ajax":
            {
                "url": "Home/Search",
                "type": "POST",

                "data": {
                    'searchType': GetSearchType(),
                    'searchText': GetSearchText()
                }
            },
        "destroy" : true  /* <---- this setting reinitialize the table */
    }).

但如果有人会找到更好的解决方案,请分享。

欧阳德运
2023-03-14
$('#table1').DataTable().ajax.url("?some_param=1&another=2").load();

这是另一种解决办法。将参数添加到默认的可数据参数中。

如何动态设置数据表的Ajax URL?

裴鸿熙
2023-03-14

可以将函数用作ajax.data选项的值,如下所示。

这样,您的代码将在每次客户端向服务器发出请求时运行,而不是像初始代码那样运行一次。

$('#table1').DataTable({
   "serverSide": true,
   "ajax": {
      "url": "Home/Search",
      "type": "POST",
      "data": function(d){
         d.searchType = GetSearchType();
         d.searchText = GetSearchText();
      }
   }
});

然后使用$(#table1)。需要重新加载表或$(#table1)时,ajax.reload()。ajax.reload(null, false)如果您不想重置当前页面。有关详细信息,请参阅ajax.reload()

 类似资料:
  • 问题内容: Ajax请求后如何刷新或重新加载div?我有此代码: 我需要重新加载或刷新标题div。 问题答案: 您可以这样加载div.div之前请注意空格

  • 问题内容: 我在一个选项卡中有一个数据表,该表是从索引方法上的控制器发送的数据中加载的。 我有加载数据表的视图 然后在加载页面时在javascript中加载数据表 我也有删除功能。如何在不重新加载页面的情况下重新加载数据(使用Ajax从控制器再次获取数据)? 问题答案:

  • 问题内容: 我需要建立一个像fmylife.com中那样的适度系统。基本上,我遇到的问题是使用Ajax(无需刷新页面)将MySQL查询加载到div中。MySQL查询 的HTML 当按“是”或“否”按钮时,应重新加载该数据。提前致谢。 问题答案: @mgraph已关闭,但如果要在按钮上执行此操作,请单击 在 post.php中 : JS : HTML : 备用HTML / JS

  • 问题内容: 我想在单击按钮时重新加载div。我不想重新加载整个页面。 这是我的代码: HTML: 单击按钮后,应该重新加载而不加载或刷新整个页面。 以下是我尝试过但无法正常工作的Jquery:- 请提出建议。 这是我页面上的DIV,其中包含一些产品的图片和序列号…这将是第一次加载时来自数据库的信息。但是,如果用户遇到问题,他将单击“再次捕获”按钮“ ”,这将再次加载这些信息。 Div的HTML代码

  • 问题内容: 我们正在发出多个ajax请求,以“保存” Web应用程序中的数据,然后重新加载页面。我们遇到了这样一种情况:(由于请求是异步发出的)在ajax调用完成时或之前重新加载页面。一种简单的解决方案是使用“ async”:false选项启用ajax调用,从而强制进行同步调用。这似乎可行,但是在执行任何调用之前运行的对话框代码会延迟运行。 任何意见是极大的赞赏! 还应注意,在重新加载之前放置al

  • 问题内容: 我有一个表单,当我单击“提交”时,应该更新同一页面上的部分文档…当我将其放置在此处时: 它按照应有的方式运行,在需要时显示问候。但是当我进入这个… 它根本不做任何事情。我究竟做错了什么? 问题答案: 该请求可能不是Ajax调用。拨打Ajax电话。用户remote_form_for代替form_for或使用jquery.form向控制器发送ajax调用。如果您使用的是jquery,请执行