Voglio creare una pagina che aggiorni il contenuto all'interno di un div async insieme a fornire all'utente un ancoraggio per consentire l'accesso diretto al contenuto all'interno del div. (Ad es www.website.co.uk/#page1)Utilizzo di AJAX per modificare il contenuto div: come visualizzare la navigazione come hash/anchor
sono riuscito a fare in modo che il contenuto può essere aggiornato per 1 pagina, tuttavia, se aggiungo più pagine smette di funzionare
Inoltre - se dovessi navigare verso l'URL website.co.uk/#page1 non visualizzerà # page1.
Qualcuno può aiutare?
Questo è il mio codice corrente:
HTML:
<h5> <a href="#page1">Test</a></h5>
<h5> <a href="#page2">Test2</a></h5>
JS:
<script type="text/javascript">
var routes = {
'#page1' : '{{site.url}}/page1'
'#page2' : '{{site.url}}/page2'
};
var routeHandler = function(event) {
var hash = window.location.hash,
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("div1").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", routes[hash], true);
xhttp.send();
};
window.addEventListener('hashchange', routeHandler);
window.addEventListener('load', function() {
var hash = window.location.hash;
if (routes.hasOwnProperty(hash)) routehandler();
});
</script>
Ho aggiunto la risposta di Shillys sotto, tuttavia, se dovessi navigare direttamente a una pagina (es. Www.website.co.uk/#page1) non visualizza il contenuto necessario –
Hai inserito una virgola dopo ogni percorso ma l'ultimo? L'oggetto rotte che mostri qui, non è valido, che il debugger dovrebbe dirti. Gli URL delle altre pagine sono corretti e la chiamata ajax restituisce l'html corretto? – Shilly