Un sito completamente in AJAX

danielloantonio

Utente Attivo
20 Lug 2012
110
0
0
Salve,
ho gia parlato qui (http://forum.mrwebmaster.it/javascript/31153-tutte-pagine-sito.html) su come integrare tutte le pagine di un sito in una sola e ho risolto con questo template (http://www.templatemo.com/preview/templatemo_278_cafe_bakery)! Ora pero sorge il problema della pesantezza della pagina dato che sono molte pagine, e non vorrei caricare tutto all'inizio ma su richiesta con ajax!
Come si puo fare?

Avevo pensato ad una cosa del genere:

HTML:
<html>
<head>
// Includo jQuery
<script type="text/javascript">
function dynpage(pagetoload) {
     $.ajax({
          type: "GET",
          url: "include.php",
          data: "id="+pagetoload,
          success: function(response){
               $("#main").html(response);
          }
     });
}
</script>
</head>
<body>
<div class="topbar"><a href="#" onclick="dynpage('home')">Home</a> || <a href="#" onclick="dynpage('search')">Ricerca</a></div>
<div id="main"></div>
<script type="text/javascript">
dynpage('home');
</script>
</body>
</html>

Potrebbe andare?

Grazie a tutti :)
 
Ultima modifica di un moderatore:
Io farei così (simile al tuo ma più sintetico):
HTML:
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Sito in AJAX</title>
        <meta charset="utf-8" />

        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>
        $(function() {
            $("#content").load("page.php", "id=home");
            
            $(".menu-item").click(function() {
                $("#content").load("page.php", "id=" + $(this).attr("data-page"));
            });
        });
        </script>
    </head>
    
    <body>
        <a href="#" class="menu-item" data-page="home">Home</a> |
        <a href="#" class="menu-item" data-page="page-1">Pagina 1</a> |
        <a href="#" class="menu-item" data-page="page-2">Pagina 2</a>

        <div id="content">
        </div>
    </body>
</html>
 
Quoto entrambe le soluzioni :fonzie:
 
Gia non ci avevo pensato! Non si potrebbe fare tipo lo stesso script ma in modo che l'url della pagina cambia? un po come fa twitter per iphone! le varie voci della topbar si caricano in ajax infatti non ricarica tutta la pagina, ma comunque l'url cambia (quindi sono pagine diverse).....

confusooo :/ Grazie a tutti
 
Prova così:
Codice:
$(function() {
    $("#content").load("page.php", "id=home");
    
    $(".menu-item").click(function() {
        $("#content").load("page.php", "id=" + $(this).attr("data-page"));
        location.hash = "page" = $(this).attr("data-page");
    });
});
 
Prova così:
Codice:
location.hash = $(this).attr("data-page");
Tra l'altro il codice precedente era sbagliato (l'uguale stava fuori dalle virgolette).

Ora, leggendo questa pagina bisogna innanzitutto aggiungere il punto esclamativo all'inizio dell'hash, quindi cambia così:
Codice:
location.hash = "!" + $(this).attr("data-page");

Inoltre, bisogna fare in modo che l'URL http://www.tuosito.com/?_escaped_fragments=pagina restituisca il codice HTML della pagina pagina, senza il resto della pagina principale. Per realizzarlo io metterei questo all'inizio della pagina:
PHP:
<?php
if (isset($_GET['_escaped_fragments'])) {
    $_GET['id'] = $_GET['_escaped_fragments'];
    require_once 'page.php';

    exit();
}
?>

Ovviamente queste sono solo delle idee: dovrai fare prove, sistemare e adattare secondo le tue esigenze.
 
Scusa mi sono perso un po! Quindi devo sostituire la stringa della location.hash e inserire quel codice php all'inizio? E poi cosi il #home sarebbe la variabile $id = home ?
 

Discussioni simili