javascript - Paginationjs 的 Ajax 调用忽略文本字段值以进行过滤
问题描述
我正在运行一个名为 Paginationjs 的 jQuery 插件。也涉及下划线,但实际上这不是这篇文章的内容。
我想添加一个文本过滤器,以便服务器可以在发送响应之前进行过滤。这是代码:
$(function() {
$('#pagination-container').pagination({
dataSource: 'pagination/api',
locator: 'data',
totalNumberLocator: function(response) {
// you can return totalNumber by analyzing response content
return response.totalAmount;
},
alias: {
pageNumber: 'pageNum',
pageSize: 'limit'
},
pageSize: 5,
ajax: {
url : 'pagination/api',
data: {
filter : $('#filter').val()
}
},
callback: function(data, pagination) {
var template = _.template($('#template-demo').html());
var html = template({data: data});
$('#data-container').html(html);
}
});
});
每当我更改页面时,都会触发 ajax 调用,并将参数 filter、pageNum 和 limit 附加到 url。
该 url 中的过滤器值在页面更改期间保持不变:空。即使我在带有 ID“过滤器”的文本字段中输入内容,它仍然是空的。
这个插件需要名为 dataSource 的设置,所以我不得不在那里使用 url 以及名为 url 的 ajax 设置内部。
有趣的事实:当我在该文本字段中输入内容并在 Firefox 上按 F5 时,浏览器会在刷新后将该内容保留在该字段中,并将输入的值发送到服务器。然后设置 url 参数“filter”的值。但是,当我更改值并更改页面时,它仍然是自网站刷新以来的相同值。
是否有任何解决方法来实现这一目标?
PS:我无法使用标签 paginationjs,因为我的声誉低于 1500。
解决方案
因此,由于 Paginationjs 正在后台初始化所有 url,而无法按照我上面的代码中看到的方式更改它,所以这里有一个解决方案。
我添加了一个按钮以在单击后重新初始化 Paginationjs。这样,我就不需要使用任何 Keypress-Event 向服务器发送无数的 ajax 请求。我还更改了文本字段的 ID。
通过重新初始化它,过滤器值将与它的值一起附加到 dataSource 参数。不再需要 Ajax 设置。
$(function() {
var paginationSettings = {
dataSource: 'pagination/api',
locator: 'data',
pageSize: 5,
totalNumberLocator: function(response) {
return response.totalAmount;
},
alias: {
pageNumber: 'pageNum',
pageSize: 'limit'
},
callback: function(data, pagination) {
var template = _.template($('#template-demo').html());
var html = template({data: data});
$('#data-container').html(html);
}
}
$('#pagination-container').pagination(paginationSettings);
$('#filter-button').click(function() {
paginationSettings.dataSource = 'pagination/api?filter=' + $('#filter-text').val();
$('#pagination-container').pagination(paginationSettings);
});
});
推荐阅读
- python - 理解类问题的函数的目的
- c++ - 如何操作重载“>>”?
- swift - 如何将方法传递给采用闭包的变量?
- java - 初学者在开始使用 MySQL 时是否有任何理由使用 InnoDB
- ios - 找出在长按和点击之间不同时按下了哪个按钮。迅速
- java - 在时间窗口内每 30 分钟运行一次任务
- ios - 如何选择将 Core Data 存储的本地数据备份到 iCloud
- swift - 快速属性初始化程序在“自我”可用之前运行
- reactjs - 使用 shortid 和 react-final-form 时超出最大更新深度
- java - 将整数列表添加到 csv 文件 (JAVA)