history.pushState () не отображает правильный URL - PullRequest
2 голосов
/ 10 мая 2011

Я использую jQuery и PHP, у меня проблема с history.pushState.

Когда я нажимаю тег привязки или ссылку, когда URL-адрес в браузере выглядит следующим образом www.example.com/index.php/home/viewer/id

При повторном нажатии ссылки URL-адрес в браузере выглядит следующим образом www.example.com/index.php/home/photo_viewer/index.php/home/viewer/id
, что неверно.

Я хочу, чтобы URL-адрес в браузере был www.example.com/index.php/home/viewer/id

Как мне решить эту проблему?

<a href="index.php/home/viewer/ $row['id'] " Onclick="viewer(this); return false;"> id </a>

<script type="text/javascript">
   function viewer(link){
       var ajax_data ={ajax:'1'};

       $.ajax({
             type: "POST",
             url: link,  
    data: ajax_data,
             success: function(html){

                  $("#viewer").html(html); 

    window.history.pushState(null,null, link);

    e.preventDefault();
     }});
        return false; } 

1 Ответ

6 голосов
/ 10 мая 2011

Возможно, потому что ваш URL является относительным.Вы должны сделать его абсолютным, добавив косую черту:

href="/index.php/home/viewer/..."
//    ^

Относительный URL-адрес всегда указывает ресурсы, которые относительно по отношению к текущему ресурсу, то есть путь только добавляется к текущемудорожка.См. Также документацию :

Новый URL-адрес не обязательно должен быть абсолютным;если он относительный, он разрешается относительно текущего URL.

Обновление: Несмотря на то, что это имеет большое значение, используйте атрибут href ссылки вместосама ссылка: link.href.

...