我的脚本问题在这里,我不明白为什么。 经过大量测试后,我了解到主要问题是Ajax请求。此外,我一直在我的脚本的另一个版本中使用Ajax请求...当时我的内容更改很顺利......但现在我想启用后退按钮,所以我问here如何那会有用......我得到了一个非常好的答案,所以我试着在tutorial的帮助下做到这一点 现在这是下面的结果: 现在更改网址工作和旧内容正在淡出但新内容(来自请求)不更新... 更新:它甚至没有发送请求...... 有人可以告诉我为什么吗?
先谢谢你
抱歉我的英语不好。
JavaScript的:
$(function () {
var newHash = "",
$content = $("#content"),
$el;
$('ul li a').click(function () {
window.location.hash = $(this).attr("href");
return false;
});
$(window).bind('hashchange', function () {
newHash = window.location.hash.substring(1);
url=$(this).attr("href");
if (newHash) {
$content
.fadeOut(200, function () {
// url=url.replace('#','');
$('#loading').css('visibility', 'visible'); //show the rotating gif animation
$.ajax({
type: "POST",
url: "load_page.php",
data: 'page' + url,
success: function (msg) {
if (parseInt(msg) != 0) //if no errors
{
$('#content').html(msg); //load the returned html into pageContet
}
$('#loading').css('visibility', 'hidden'); //and hide the rotating gif
}
});
$('ul li a').removeClass("current");
$("'ul li a'[href='" + newHash + "']").addClass("current");
});
};
});
$(window).trigger('hashchange');
});
PHP:
<?php
if(empty($_POST['page'])) die("0");
$page = $_POST['page'];
// validate it as alphanumeric before reading the filesystem
if (preg_match('/^[a-z0-9]+$/i', $_POST['page']) && file_exists('article/'.$page.'.html')) {
echo file_get_contents('article/'.$page.'.html');
}
else echo 'There is no such page!';
?>
更新:在firebug-plugin中我得到了这个:
错误:语法错误,无法识别的表达式:'ul li a [href ='anmeldung']
这样做会使URL空吗?
答案 0 :(得分:2)
更改此行:
$("'ul li a'[href='" + newHash + "']").addClass("current");
进入这一个:
$('ul li a[href="' + newHash + '"]').addClass('current');
至少那是 FireBug抱怨的语法错误。
答案 1 :(得分:1)
您正以错误的方式向PHP脚本发送数据。
您应该将其作为key=value
发送,您将其发送为keyvalue
,因此您的PHP脚本永远不会获得page
变量。
所以改变你的脚本
data: 'page'+url,
到
data: 'page='+url,
// ^
答案 2 :(得分:0)
$(function() {
var newHash = "",
$content = $("#content");
$('ul li a').click(function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).bind('hashchange', function(){
newHash = window.location.hash.substring(1);
url=newHash
if (newHash) {
$content
.fadeOut(200, function() {
url=url.replace('#','');
$('#loading').css('visibility','visible'); //show the rotating gif animation
$.ajax({
type: "POST",
url: "load_page.php",
data: 'page='+url,
success: function(msg){
if(parseInt(msg)!=0) //if no errors
{
$content.fadeIn(200, function() {
$('#content').html(msg);}); //load the returned html into pageContet
} $('#loading').css('visibility','hidden');//and hide the rotating gif
}
});
$('ul li a').removeClass("current");
$('ul li a[href="' + newHash + '"]').addClass('current');
});
};
});
$(window).trigger('hashchange');
});
啊,我发现了错误 问题是我把网址设置为晚了... 谢谢每个人 - 看起来并帮助我解决这个问题的机器人^^