2013-08-20 3 views
1

У меня есть небольшая проблема с моим скриптом здесь. По какой-то причине он не позволяет # -tags, и я не знаю почему. Я создал этот javascript с помощью этого tutorial. (Загрузка страниц хорошо работает без каких-либо проблем.)Ajax URL # не обновляется

Может кто-нибудь, пожалуйста, просмотрите его и скажите, почему это не работает?

var default_content=""; 

    $(document).ready(function(){ //executed after the page has loaded 

     checkURL(); //check if the URL has a reference to a page and load it 

     $('ul li a').click(function (e){ //traverse through all our navigation links.. 

       checkURL(this.hash); //.. and assign them a new onclick event, using their own hash as a parameter (#page1 for example) 

     }); 

     setInterval("checkURL()",250); //check for a change in the URL every 250 ms to detect if the history buttons have been used 

    }); 

    var lasturl=""; //here we store the current URL hash 

    function checkURL(hash) 
    { 
     if(!hash) hash=window.location.hash; //if no parameter is provided, use the hash value from the current address 

     if(hash != lasturl) // if the hash value has changed 
     { 
      lasturl=hash; //update the current hash 
      loadPage(hash); // and load the new page 
     } 
    } 

    function loadPage(url) //the function that loads pages via AJAX 
    { 
     // Instead of stripping off #page, only 
     // strip off the # to use the rest of the URL 
     url=url.replace('#',''); 

    $('#loading').css('visibility','visible'); //show the rotating gif animation 

     $.ajax({ 
      type: "POST", 
      url: "load_page.php", 
      data: 'page='+url, 
      dataType: "html", 
      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 
      } 

     }); 

    } 
+0

Что на самом деле происходит с этим? Вы должны дать более подробную информацию о том, что вы делаете, чтобы создать ошибку, что на самом деле происходит неправильно и что вы ожидаете. На данный момент совершенно неясно, не будет ли его загрузка страниц, независимо от того, не делает ли она ajax или что-то еще. Получаете ли вы какие-либо сообщения об ошибках в консоли javascript? – Chris

+0

Вы действительно должны использовать событие hashchange, оно хорошо поддерживается с IE8: https://developer.mozilla.org/en-US/docs/Web/API/window.onhashchange – nullability

+0

@nullability Спасибо за помощь и извините спросите, можете ли вы показать m2, как мне это включить? когда я это пробовал, моя страница не загружалась ... что-то вроде hashChange не определено – adho12

ответ

1

Вы можете упростить этот огромный, добавив функцию прослушивания hashchange события, как это:

$(window).on("hashchange", function() { 
    loadPage(window.location.hash); 
}); 

Таким образом, вам не нужно иметь дело с таймерами или первостепенных событий щелчка на якорях ,

Вам также не нужно отслеживать lasthash, так как hashchange даже срабатывает только при изменении хеша.

+0

также возможно использовать [BBQ-плагин] в моем коде? (http://benalman.com/projects/jquery- bbq-plugin /) Если да, вы можете показать мне, как переписать весь мой код, пожалуйста? Спасибо за вашу помощь до сих пор, а также за футурную поддержку :) – adho12

+0

Плагин для барбекю делает то же самое. Если вам нужна дополнительная помощь, вы должны создать новый вопрос. – nullability

Смежные вопросы