Php 使用Javascript的下一页/上一页?
我正在创建一个类似于powerpoint的在线培训系列页面。它将非常直截了当,并将页面设置为: page1.php page2.php page3.php ... page20.php 我将继续老一套,使用iframe隐藏地址栏,因为人们不应该理解命名约定而跳过。(不太严重,所以我想保持简单) 我想做的是基于它们所在的当前页面,例如page5.php创建指向page4.php和page6.html的链接。显然,无需手动编写每页代码 如果这是一个javascript函数,那就太理想了,因为我不希望地址显示在浏览器信息栏中,但我也对php技巧持开放态度 有什么办法吗Php 使用Javascript的下一页/上一页?,php,javascript,jquery,Php,Javascript,Jquery,我正在创建一个类似于powerpoint的在线培训系列页面。它将非常直截了当,并将页面设置为: page1.php page2.php page3.php ... page20.php 我将继续老一套,使用iframe隐藏地址栏,因为人们不应该理解命名约定而跳过。(不太严重,所以我想保持简单) 我想做的是基于它们所在的当前页面,例如page5.php创建指向page4.php和page6.html的链接。显然,无需手动编写每页代码 如果这是一个javascript函数,那就太理想了,因为我不希望
var actuPage = parseInt(location.href.replace(/[^0-9]/, ''))+1;
location.href = 'page'+actuPage+'.php';
如果您的URL中没有其他号码,那么这应该是可行的。如果这样做,则必须更改replace
的模式。
代码用于下一页,将上一页的+1
更改为-1
。使用。您可以将其放入如下函数中:
<script type='javascript'>
function goto(url) { window.location=url; }
</script>
<a href='#' onclick='goto("page3.php"); return false;'>Previous</a>
<a href='#' onclick='goto("page5.php"); return false;'>Next</a>
函数goto(url){window.location=url;}
您还可以使用会话变量来隐藏它,这样您就可以这样做(我希望我的PHP技能仍然很好):
然后把这个放在你需要的地方
<?php
include("page$_SESSION[curpage].php");
if($_SESSION['curpage'] > 1) {
echo "<a href='page.php?go=prev' rel='prev'>Previous</a>";
}
if($_SESSION['curpage'] < $MAX_PAGE) {
echo "<a href='page.php?go=next' rel='next'>Next</a>";
}
?>
请注意,当网络爬虫每次返回不同的页面时,网络爬虫将无法对此进行太多处理。对Pikrass的功能进行一些扩展,以处理第一个/最后一个场景:
function goto(url) { window.location=url; }
var curPage = parseInt(location.href.replace(/page([0-9]+)\.php/, ''))
if (curPage <= 1) {
// First page, no 'back' link
document.write('<a href="#" class="disabled">Back</a>');
} else {
var backPage = curPage-1;
document.write("<a href=\"#\" onclick=\"goto('page"+backPage+".php')\">Back</a>");
}
if (curPage >= 9) { // Replace with highest page number
// Last page, no 'next' link
document.write('<a href="#" class="disabled">Next</a>');
} else {
var nextPage = curPage+1;
document.write("<a href=\"#\" onclick=\"goto('page"+nextPage+".php')\">Back</a>");
}
函数转到(url){window.location=url;}
var curPage=parseInt(location.href.replace(/page([0-9]+)\.php/,“”))
如果(curPage=9){//替换为最高页码
//最后一页,无“下一页”链接
文件。写(“”);
}否则{
var nextPage=curPage+1;
文件。填写(“”);
}
如果查看页面的源代码,URL不会隐藏,但当鼠标悬停在链接上时,它们不会根据请求显示在浏览器的状态栏中
编辑使用Pikrass“更具体的一个”更新正则表达式,以处理URL中其他地方的其他数字。谢谢皮克拉斯 这是MidnightLightning的版本,它使用了更好的RegExp来获取当前页面,即使URL中有其他数字也可以使用
function goto(url) { window.location=url; }
var regPage = /page([0-9]+)\.php/;
var match = regPage.exec(location.href);
var curPage = parseInt(match[1]);
if (curPage <= 1) {
// First page, no 'back' link
document.write('<a href="#" class="disabled">Back</a>');
} else {
var backPage = curPage-1;
document.write("<a href=\"#\" onclick=\"goto('page"+backPage+".php')\">Back</a>");
}
if (curPage >= 9) { // Replace with highest page number
// Last page, no 'next' link
document.write('<a href="#" class="disabled">Next</a>');
} else {
var nextPage = curPage+1;
document.write("<a href=\"#\" onclick=\"goto('page"+nextPage+".php')\">Back</a>");
}
函数转到(url){window.location=url;}
var regPage=/page([0-9]+)\.php/;
var match=regPage.exec(location.href);
var curPage=parseInt(匹配[1]);
如果(curPage=9){//替换为最高页码
//最后一页,无“下一页”链接
文件。写(“”);
}否则{
var nextPage=curPage+1;
文件。填写(“”);
}
我喜欢由几个人组成的答案。:)
如果可以,请按照建议选择PHP代码。它更“干净”听起来像是要使用查询字符串变量,所以
page.php?page=1
,page.php?page=2
,page.php?page=3
等等,为什么不使用ajax而不是iframe呢
好吧,没关系,您标记了问题jquery,因此我认为您可以使用另一个link属性“告诉”js重定向到哪里
我的意思是:
$.(document).ready(funciton(){
//i use the live method becose.. you know, maybe in the future
//you will go with ajax ;)
//live method is avbaiable in jquery 1.3!
$("a.navigation").live('click', function(){
window.location = $(this).attr("rel");
});
});
这使您的html标记不再需要单击
标记中的许多onclick
函数
因此,您的标记将如下所示:
<a href="#" rel="page1.php">Go to page 1</a>
<a href="#" rel="page2.php">Go to page 2</a>
<!-- .. and so on.. -->
但是,如果您计划使用js链接,则永远无法完全隐藏页面URL
你可以用php和哈希字符串隐藏它们,但我不知道这是否值得
其他人建议使用regexp方法来计算页码和页面链接;我将通过PHP打印链接:这将让你更好地控制全局行为(我们不知道你有多少页,如果它们是与数据库相关的,即使你给我们的信息也会让我认为你的服务器上有所有的页面[x].PHP)别忘了为第一页/最后一页添加额外的逻辑,为了防止链接显示到
page0.php
或page-1.php
。替换不适用于数字,我只能使用文本。更改模式是什么意思?哦,我的URL中确实有一个数字,所以有没有一种方法可以使用page#.php?+1,但仅适用于php解决方案。这是其中唯一一个“隐藏”页码的。他也这么要求的。好主意!如果($\u GET['go']='home')$\u SESSION['curpage']=1,则最好在PHP脚本中添加一个
和适当的链接,以防您的会话变量被搞砸。@altCognito OP只要求URL在悬停在链接上方时不显示在状态栏中,而不是URL不显示在源代码中。我也希望+1,但我没有投票权,所以必须用此评论来支持它。如果不允许Web爬虫查看整个内容是一个问题,那么您可以检测爬虫并在一个页面中为其提供整个演示内容。这样,从搜索引擎发送的用户将到达您演示文稿的开头。当同一页面在同一会话中多次打开时,会发生冲突。而是使用带有基于请求的隐藏参数的POST表单。
<a href="#" rel="page1.php">Go to page 1</a>
<a href="#" rel="page2.php">Go to page 2</a>
<!-- .. and so on.. -->
<a href="#" rel="1">Go to page 1</a>
<a href="#" rel="2">Go to page 2</a>
<!-- .. and so on.. -->
$.(document).ready(funciton(){
$("a.navigation").live('click', function(){
window.location = 'page' + $(this).attr("rel") + '.php';
});
});