我在HTML5中编写了一个单页面应用程序。我使用JQuery和哈希导航在页面之间导航。这到目前为止工作正常。现在我写了一个非常简单的PHP脚本,从我的数据库中提取博客条目。当然,我希望用户能够链接这些文章并导航标签等。我将如何实现它?
我尝试了http://example.com/#blog?tag=news,但不知怎的,我的php脚本无法捕获该参数。
答案 0 :(得分:2)
这是由#
表示的片段,仅供浏览器使用,不会传递给服务器。正如你构建的那样,PHP不会收到$_GET['tag']
而不是#blog
。
尝试?tag=news#blog
但PHP仍然无法获得#blog
。
答案 1 :(得分:2)
就像http://www.example.com?tag=news#blog一样,在我看来它看起来更好,并且所谓的@AbraCadaver声明仅供浏览器使用。
<?php echo $_GET['tag']; ?> //would output news
答案 2 :(得分:1)
你可以使用这个var $_GET ['tag']
答案 3 :(得分:0)
你必须使用java scritp
例如:
var hash = location.hash;
它会将哈希值返回给你
但是你需要使用
发送到服务器端
java脚本的发布或获取
答案 4 :(得分:0)
我已经解决了这个问题,想在这里分享一下。
这里的根本问题是使用JQuery加载所有内容。虽然我的初始URI是错误的,但http://example.com/?tag=news#blog也没有解决它。该变量从未发送到PHP的$ _GET数组,因为index.html不包含任何PHP,并且脚本通过JQuery / Ajax加载到div中。
所以这里的解决方案是修改我的JQuery函数:
function navigate(theHash)
{
var parsed = theHash;
var tag = '';
if ( theHash.indexOf("/") != -1 ){ /* Check if there is a trailing slash in the string */
parsed = theHash.substr(0, theHash.indexOf("/"));
}
if ( theHash.indexOf(",") != -1 ){ /* Check for Parameters to send to PHP */
parsed = theHash.substr(0, theHash.indexOf(","));
tag = theHash.substr(theHash.indexOf(','), theHash.length);
}
if ( parsed.localeCompare("#!portfolio") == 0 ){
$('#content').load('portfolio.html');
}
else if ( parsed.localeCompare("#!blog") == 0 ){
if ( tag.localeCompare('') != 0 )
{
$("#content").load('blog.html?tag='+tag.substr(1, tag.length));
}
else{
$("#content").load('blog.html');
}
}
else{
$('#content').load('front.html');
}
}
因此,if语句的博客部分稍微改变,加载带有附加参数的html页面(包含php代码),变量被正确传输到PHP,我可以通过$ _GET读取它。虽然这只是初稿,需要针对更多参数和更强大的行为进行改进,但它显示了我如何解决问题。