Ho la seguente applicazione di test: http://dev.driz.co.uk/ajax/Utilizzando i pulsanti Indietro e Avanti con l'API Storia
È possibile fare clic sul link per caricare in altre pagine utilizzando jQuery AJAX e ci sono due tipi, globalTabs e localTabs che carico contenuto in diversi pannelli. NOTA: che ogni pagina è in realtà la pagina intera, ma prendiamo il contenuto che vogliamo usando il metodo di ricerca di jQuery.
Per migliorare questo sto utilizzando l'API di cronologia HTML5 (History.js per il cross-browser).
I titoli e gli URL cambiano correttamente e lo stack della cronologia viene inviato correttamente e quando si utilizzano i pulsanti Indietro e Avanti l'url e il titolo vengono ripristinati.
Ora la parte complicata sta caricando nuovamente il contenuto dallo stato precedente e più complicato caricando il tipo corretto ad es. ajax globale o locale. Per raggiungere questo obiettivo, ho bisogno di passare ENTRAMBI i dati e il tipo allo stato push in modo che possa essere riutilizzato nuovamente per il popstate ...
Qualcuno può aiutarmi a indicarmi la giusta direzione? Ho tutte le prime parti funzionanti, solo un caso di ottenere questo passaggio del tipo Ajax al pushState e quindi riutilizzarlo con la modifica del popstate.
di migliorare su questo ho riscriverlo come segue per indicare il mio piano per far passare il tipo e di dati:
NOTA: la Storia maiuscola è perché sto utilizzando History.js
var App = {
init: function() {
$(document).ready(function() {
$('.globalTabs li a').live('click', function (e) {
e.preventDefault();
App.globalLoad($(this).attr('href'));
});
$('.localTabs li a').live('click', function (e) {
e.preventDefault();
App.localLoad($(this).attr('href'));
});
});
window.addEventListener('popstate', function(event) {
// Load correct content and call correct ajax request...
});
},
localLoad: function (url) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.localContent').html($(responseHtml).find('#localHtml'));
$data = { $(responseHtml).find('#localHtml'), 'local'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
},
globalLoad: function (url) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.mainContent').html($(responseHtml).find('#globalHtml'));
$data = { $(responseHtml).find('#globalHtml'), 'global'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
}
};
App.init();
AGGIORNAMENTO: Per chiarire questa domanda, sono due problemi con cui cerco aiuto.
1.) Ottenere i pulsanti Indietro e Avanti che funzionano con le richieste Ajax in modo che possano caricare nuovamente i dati corretti nell'area del contenuto.
2.) Caricamento del contenuto nell'area corretta passando anche il contenuto con il metodo pushState in modo che sappia se si tratta di una div div o di una richiesta di divisione locale.
E come faccio a spegnerlo? Non parli di Popstate? Come quello che devo fare è cambiare il contenuto e poi il titolo (replicando efficacemente ESATTAMENTE quello che ha fatto la chiamata ajax) quando un utente usa i pulsanti Indietro e Avanti, ma invece di ajax userà i dati della cronologia come nessun punto che lo ricarica indietro in ovviamente. – Cameron
Ho anche ricevuto l'errore: 'Uncaught TypeError: conversione della struttura circolare in JSON 'Qualche idea cosa c'è che non va? http://dev.driz.co.uk/ajax/ – Cameron
modificato la mia risposta, riguardo l'errore json, basta controllare di passare oggetti semplici, senza funzioni – cuzzea