0

我的脚本有问题,我不明白为什么。经过大量测试后,我了解到主要问题是 Ajax 请求。此外,我一直在我的脚本的另一个版本中使用 Ajax 请求......当时我的内容更改非常顺利......但现在我想启用后退按钮,所以我在这里询问它是如何工作的。 ..我得到了一个很好的答案,所以我尝试在本教程的帮助下做到这一点, 现在结果如下:现在更改 url 有效,旧内容正在淡出,但新内容(来自请求)没有更新...... 更新:它甚至没有发送请求......有人可以告诉我为什么吗?

谢谢先进

对不起我的英语不好。

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!';
?>

更新:在萤火虫插件我得到这个:

错误:语法错误,无法识别的表达式:'ul li a[href='anmeldung']

这就是我的 FireBug 控制台的样子……这是否意味着 URL 为空?

4

3 回答 3

2

更改此行:

$("'ul li a'[href='" + newHash + "']").addClass("current");

进入这个:

$('ul li a[href="' + newHash + '"]').addClass('current');

至少这是FireBug 抱怨的语法错误。

于 2013-08-22T18:57:54.980 回答
1

您以错误的方式将数据发送到您的 PHP 脚本。您应该将其发送为key=value,您将其发送为keyvalue,因此您的 PHP 脚本永远不会获取该page变量。

所以改变你的脚本

data: 'page'+url,

data: 'page='+url,
//         ^
于 2013-08-22T17:53:51.697 回答
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');

});

啊,我发现了错误,问题是我将 url 设置为迟到了......感谢每个人 - 看着并帮助我解决这个问题的机器人 ^^

于 2013-08-22T19:29:23.783 回答