在过去的几天里,我正在网上闲逛一个脚本,这个脚本有我想要的元素..最好的就是这个http://www.queness.com/post/328/a-simple-ajax-driven-website-with-jqueryphp,但是有很多问题,我需要更好的地方溶液:
我想要没有标签:我想要所有链接来加载文件夹(www.site.com/first/site/)。这可以在github上运行magicaly(单击此处https://github.com/spjoe/deluge-yarss-plugin,然后单击随机文件并在观看地址栏时返回)。如果有人知道他们做了什么或如何做,那将非常酷。
我需要动态内容:上面的脚本只从switch函数加载“case”,而我需要php检查url并在mysql数据库中找到一个文件,并根据url从所需的表中回显出内容,如果它在db ofcourse中找到(如果我指向site.com/harvey的链接,php应该在数据库中找到Harvey并显示例如他的手机,地址和其他详细信息,而这不能预先加载但只是请求由于带有问题而点击了。)
历史记录:我希望有一个选项可以让网站上的后退和前进动作完美无缺,并且点击链接时可以使用动画。
changable div中的工作链接:因为某些脚本存在问题,这些脚本不会更改链接所在的内容(例如,第一个内容框包含导航,应该使用不同的导航替换第二个方框),再次与github合作很好..
我希望你能给我一些链接或者更多帮助我们的代码..
答案 0 :(得分:1)
我认为您要查找的脚本是pjax,它具有您想要的所有功能。你可以在github上找到它:https://github.com/defunkt/jquery-pjax/tree/heroku
修改强>
您可以使用任何您喜欢的服务器端语言。例如,
<script src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script src="jquery.pjax.js"></script>
<script type="text/javascript">
$(function(){
$('nav a').pjax('#content')
})
</script>
在您的网站上,
<nav>
<a href="otherContent1.php" >click me for other content</a>
<a href="otherContent2.php" >click me for even more additional content</a>
</nav>
<section id="content">
<h1>Original Content</h2>
<p>
this will be replaced by pjax with the content's of <a href="otherContent1.php">otherContent1.php</a> or <a href="otherContent2.php">otherContent2.php</a>
</p>
</section>
在您的主模板中并修改您的PHP代码,以便它查找HTTP_X_PJAX
标题。如果它存在(请参阅xhr.setRequestHeader('X-PJAX', 'true')
)仅渲染应替换<section id="content">
内容的部分,否则渲染整个页面。 Pjax足够智能,如果它有效,它将只替换<section id="content">
的内容,如果它不起作用,你仍然可以使用常规链接。如果你正在使用谷歌分析,pjax甚至会处理谷歌分析,所以你的跟踪仍然有效。
EDIT2:示例
好的,这里有一个示例php页面。请注意我不测试这个,我只是在堆栈溢出时快速写入它,以显示你可以解决这个问题。此代码未经测试,当然不是生产就绪。但作为一个例子,你可以做这样的事情(该文件应该命名为index.php):
<?php
$render_template=true;
if ($_SERVER["HTTP_X_PJAX"])
{
$render_template=false;
}
?>
<?php
if ($render_template) {
?>
<html>
<head>
<meta charset="utf-8" />
<title>Testing Pjax</title>
<script src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script src="jquery.pjax.js"></script>
<script type="text/javascript">
$(function(){
$('nav a').pjax('#content')
})
</script>
</head>
<body>
Date in template: <?php echo $today = date("D M j G:i:s T Y"); ?>
<nav>
<a href="index.php?content=1" >click me for other content</a>
<a href="index.php?content=2" >click me for even more additional content</a>
</nav>
<section id="content">
<?php
}
?>
<?php
if ($_Get["content"]==1)
{
?>
<h1>Content=1</h1>
Date in content: <?php echo $today = date("D M j G:i:s T Y"); ?>
<p>
this will be replaced by pjax with the content's of <a href="index.php?content=1">index.php?content=1</a> or <a href="index.php?content=2">index.php?content=2</a>
</p>
<?php
} else {
?>
<h1>Content 2=2</h1>
Date in content: <?php echo $today = date("D M j G:i:s T Y"); ?>
<p>
this will be replaced by pjax with the content's of <a href="index.php?content=1">index.php?content=1</a> or <a href="index.php?content=2">index.php?content=2</a>
</p>
<?php
}
?>
<?php
if ($render_template) {
?>
</section>
</body>
</html>
<?php
}
?>
答案 1 :(得分:0)
如果您希望网址在您抓取网页请求时显示“正确”网址,您可以使用PJAX它会使用pushState
更改历史记录,但它不适用于ie6-ie9检查出于兼容性问题而出CanIUse: History。