2016-09-28 2 views
1

Прежде всего позвольте мне показать структуру папокАякса навигации разные папки

основной (папку)

страниц (папок), так и внутри папки страниц у меня есть 5 страниц HTML. и в основной папке у меня есть JS, index.php и load.php

Heres код для index.php

<header> 
     <nav> 
      <ul> 
       <li><a href="#page1" class="active" id="page1-link">Page 1</a></li> 
       <li><a href="#page2" id="page2-link">Page 2</a></li> 
       <li><a href="#page3" id="page3-link">Page 3</a></li> 
       <li><a href="#page4" id="page4-link">Page 4</a></li> 
      </ul> 
     </nav> 
</header> 

<div id="main-content"> 
    <?php include('pages/page1.html'); ?> 
</div> 

Я сделал AJAX навигации и проблемы я прямо сейчас Я не знаю, как сделать ссылку внутри страниц (папка) перейти на другую определенную страницу, не освежая тоже.

Код работает нормально, но что, если у меня есть ссылка внутри страниц (папка), которая является, например: page1, и я хочу, чтобы она переходила на другую определенную страницу без обновления.

Я попытался создать пользовательский js снова внутри страниц (папка), но он не работает. Есть ли другой способ?

+0

хмм вы можете отправить парам корыто URL, Например yoururl.com # = стр.1 с просмотрами страниц, Тогда читайте о просмотрах страниц и параметров на # изменения, и сделать функцию, которая изменит ваш основной контент. Добавление динамического #something к вашему URL-адресу не обновит вашу страницу. Все это возможно с помощью jquery. Если вы хотите увидеть полный код, я могу отправить ответ. – noitse

+0

Если ваша ссылка на страницы/page1.html работает, тогда ссылка на страницы/стр. 2.html должен работать, потому что вы заменяете контент на index.html, так что технически вы на index.html все время. Я правильно понимаю вашу проблему? –

+0

hmm no, ссылка находится на страницах/page1.html, которая заменяет содержимое на index.html, но страницы/page1.html не смогут прочитать custom.js cuz в своей папке, поэтому у него не будет расширения например, .html или .php –

ответ

0

Я напишу свое решение, которое я использовал, используя jQuery. Идея заключается в том пошлешь пользовательские parametar страницы вы хотите загрузить через URL.I надеюсь, что это то, что вы стремитесь к

Пример test.com # = MYPAGE с просмотрами страниц,

Идея заключается в следующем, у вас есть mainPage.html и его js-файл. Внутри mainPage.html есть div с основным содержанием класса.

В файле mainpage js вы проверяете изменение хеша для pageView. Чтение URL-адреса, который должен быть something.com # pageView = yourPage, вы получаете страницу, которую хотите открыть, в данном случае yourPage.

Мы загружаем страницу с помощью jquery через селектор div и функцию .load, я установил, что он находится внутри страниц папок, вы можете отправить все местоположение страницы через URL-адрес, например, something.com # pageView = location/связанных с просмотрами страниц

чтобы получить доступ к URL мы сделаем функцию getUrlVars

function getUrlVars() { 
    var vars = [], hash; 
    var indexofHash = window.location.href.indexOf('#'); 
    var hashes; 
    if (indexofHash == -1) { 
     hashes = window.location.href.slice((window.location.href.indexOf('?')) + 1).split('&'); 
    } else { 
     hashes = window.location.href.slice((window.location.href.indexOf('#')) + 1).split('&'); 
    } 
    for (var i = 0; i < hashes.length; i++) { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
} 

Таким образом, наши JS должны иметь на документ готов, чтобы проверить, какие страницы мы хотим загрузить, и на # Сменить.

var $pageView = $('.main-content') 

$(document).on('ready', function() { 
     var loadPage = getUrlVars()["pageView"] 
     if(loadPage == undefined || loadPage == ''){ //Load home page 
      $pageView.load("pages/home.html", function() { 
       //After load 
      }); 
     }else{ 
      $pageView.load("pages/"+loadPage+".html",function(){ 
       //After page load 
      }) 
     } 
    }); 

И это preaty # Сменить много же

$(window).on('hashchange', function (e) { 
    var loadPage = getUrlVars()["pageView"] 
    if (loadPage == undefined && loadPage == '') { 
     $pageView.load("pages/home.html", function() { 
      //After page load 
     }); 
    } else { 
     $pageView.load("pages/" + loadPage + ".html", function() { 
      //After page load 
     }); 
    } 
}); 

Вы можете добавить загрузчик в начале функций, и удалить их после загрузки страницы.

Теперь HREF должен выглядеть как-то вроде HREF = «# = стр.1 с просмотрами страниц,»

+0

, так что если я сделаю этот код, сделайте внутри page1.html, находящийся внутри папки страниц, он загрузит содержимое # страницы4? –

+0

@AliceManalangLacanilao вы тоже можете это сделать, тогда вам не нужно получать url vars, вы можете использовать window.location.hash, который вернет значение хэш-кода ur, но я использовал pageView, поэтому я могу отправить несколько параметров после моей страницы. Например, ufl.com # pageView = userProfile & userCode = something – noitse

+0

он не работает. hmm вы можете посмотреть на этом сайте, потому что я получил код здесь [ссылка] (http://www.webdesignerdepot.com/2014/02/how-to-supercharge-your-sites-speed-with-ajax-and -jquery /) Загрузите демо-версию 2 и попробуйте добавить ссылку на странице 2, которая перейдет на страницу 1 '' и сообщите мне, если она работает Спасибо –

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