我有几乎相同的Ajax Request调用,但我需要对其进行扩展以使其更加通用
参见示例代码:http :
//jsfiddle.net/2b8gR/6/
我让它适用于Page A,并且想将其用于Page B,C,D等…,但不想为每个新的Ajax请求重写该函数。
除以下内容外,大多数代码将保持不变:
等等。
如何使Ajax调用和元素更通用,所以不必多次编写此请求?
注意:我需要能够跟踪当前显示的每个页面(A,B,C等)。是的,所有这些都在同一页面上
HTML:
<!-- Page A -->
<div>
<span>Page A</span>
<input id="page_a_next" name="page_a_next" type="button" value="Next" data-inline="true" />
<input id="page_a_prev" name="page_a_prev" type="button" value="Previous" data-inline="true" />
</div>
<div id="display_page_a_page" name="display_page_a_page">
</div>
<div id="display_page_a_number" name="display_page_a_number">
</div>
<!-- Page B -->
<div>
<span>Page B</span>
<input id="page_b_next" name="page_b_next" type="button" value="Next" data-inline="true" />
<input id="page_b_prev" name="page_b_prev" type="button" value="Previous" data-inline="true" />
</div>
<div id="display_page_b_page" name="display_page_b_page">
</div>
<div id="display_page_b_number" name="display_page_b_number">
</div>
JS:
var currentPageA=1;
var totalPageA=113;
loadPageA();
$("#page_a_next, #page_a_prev").click(function(){
currentPageA = ($(this).attr('id')=='page_a_next') ? currentPageA + 1 : currentPageA - 1;
if(currentPageA<=0) {
currentPageA=1;
$('#page_a_prev').attr('disabled','disabled');
} else if(currentPageA==114) {
currentPageA=113;
$('#page_a_next').attr('disabled','disabled');
} else {
loadPageA();
}
});
function loadPageA(){
$('#page_a_next').attr('disabled','disabled');
$('#page_a_prev').attr('disabled','disabled');
$.ajax({
url: 'page_a.php?page='+currentPageA,
type: 'POST',
error : function (){ alert('Error'); },
success: function (data) {
$('#display_page_a_number').html(currentPageA + ' of ' + totalPageA);
$('#display_page_a_page').html(data);
$('#page_a_next').attr('disabled','');
$('#page_a_prev').attr('disabled','');
}
});
}
这里的关键不仅在于泛化您的JS,而且还泛化您的HTML。您还必须将currentPageA和totalPageA变量更改为array,以便它们可以容纳多个值。
观看我的演示: http :
//jsfiddle.net/Jaybles/b2uRd/
的HTML
<!-- Page A -->
<div>
<span>Page A</span>
<input class='pageButton' id="page_a_next" name="page_a_next" type="button" value="Next" data-inline="true"/>
<input class='pageButton' id="page_a_prev" name="page_a_prev" type="button" value="Previous" data-inline="true" />
</div>
<div id="display_page_a_page" name="display_page_a_page">
</div>
<div id="display_page_a_number" name="display_page_a_number">
</div>
<!-- Page B -->
<div>
<span>Page B</span>
<input class='pageButton' id="page_b_next" name="page_b_next" type="button" value="Next" data-inline="true" />
<input class='pageButton' id="page_b_prev" name="page_b_prev" type="button" value="Previous" data-inline="true" />
</div>
<div id="display_page_b_page" name="display_page_b_page">
</div>
<div id="display_page_b_number" name="display_page_b_number">
</div>
JS
var currentPage = {'a':1, 'b':1}; //Should go from A to Z
var totalPage = {'a':113, 'b':115}; //Should go from A to Z
$(".pageButton").click(function(){
var a = $(this).attr('name').split("_");
var page = a[1];
var dir = a[2];
currentPage[page] = (dir=='next') ? currentPage[page] + 1 : currentPage[page] - 1;
if(currentPage[page]<=0) {
currentPage[page]=1;
$('#page_' + page + '_prev').attr('disabled','disabled');
} else if(currentPage[page] > totalPage[page]) {
currentPage[page]=totalPage[page];
$('#page_' + page + '_next').attr('disabled','disabled');
} else {
loadPage(page);
}
});
loadPage('a');
function loadPage(page){
$('#page_' + page + '_next').attr('disabled','disabled');
$('#page_' + page + '_prev').attr('disabled','disabled');
$.ajax({
url: 'page_' + page + '.php?page='+currentPage[page],
type: 'POST',
error : function (){ document.title="error"; },
success: function (data) {
$('#display_page_' + page + '_number').html(currentPage[page]+ ' of ' + totalPage[page]);
$('#display_page_' + page + '_page').html(data);
$('#page_' + page + '_next').attr('disabled','');
$('#page_' + page + '_prev').attr('disabled','');
}
});
}
在我的nodejs应用程序中,我有一个包含以下内容的文件: index.js目录: 向上编码most每60秒检查一次my功能。此代码正常工作,但存在一个问题,例如,当5名用户在我的应用程序中联机时,我在控制台中看到重复60秒后的
问题内容: 我有一个返回promise的方法,并且在内部该方法调用一个API,该API每分钟只能有20个请求。问题是我有很多对象(大约300个),并且我想为每个对象调用API。 目前,我有以下代码: 但是它不处理时序约束。我希望我可以使用_.chunk和_.debounce之类的东西,但是我无法解决这个问题。有人可以帮我吗? 问题答案: 您可以每分钟发送1个包含20个请求的块,或者每3秒将其间隔1
问题内容: 我在服务器端模式下使用DataTables 1.10.15。 我通过ajax将表单的内容传递给PHP脚本,以使其搜索数据库: 我还有其他一些js,它会在将ajax请求发送到之前检查至少3个字符是否输入到字段中。 这意味着-输入3个字符后- 每次 按下一个键都会发出一个ajax请求,因此可能会有ajax请求队列。 每当发出新的ajax请求时,我如何才能将其终止,以免它们以这种方式排队?我
我内部有多个ajax函数,但只执行第一个ajax请求,我不知道为什么!我添加了一些警告字段,看看它有多远。我使用的是django环境。例如,当单击bidnow-BTN时,这个jquery应该执行,但由于某种原因,在第一个ajax请求之后,页面实际上会刷新并在页面url的末尾添加类似/?bidprice=100001的内容。这是不应该发生的。
需要一些关于iOS开发的帮助。Swift 5 在swift 5中,有没有办法将3个系统权限警报(相机、麦克风和照片)合并在一个警报中? 使用AVCaptureDevice访问相机和麦克风,使用PHPhotoLibrary访问照片...
问题内容: 我正在使用其OData API为Netflix开发应用程序。我一直关注Stephen Walther的博客条目 ,了解如何查询OData API。在其中,他使用以下代码: 在我的应用程序中,我需要使用OData的分页链接来检索完整列表。我的代码如下: 但是,当运行时,我会不断收到。似乎回调函数被调用了两次。如果我删除该行,该应用程序将正常运行。我的问题是:离开ajax调用的代码行是否有