2017-09-11 1 views
2

Wie im TitelLeerer Seitenfehler aufgrund des Pfadnamens

Ich habe eine Webseite mit mehreren Seiten darauf. Die Seite war ursprünglich eine einseitige Anwendung, die mit jQuery erstellt wurde, bevor ich einige der Inhalte in separate Dateien verschoben und dynamisch mit einem jQuery-Templating-Plugin geladen habe. Die Seite beginnt mit der Standardeinstellung pathname ('/') und wenn sich der Inhalt ändert, ändert sich auch die pathname der URL.

function goTo(page){ 
    // Changing URL without reloading the page (to allow changing the URL 
    //state without changing the page) 
    if (page !== 'main'){ 
     console.log("Yes it is not main!"); 
     window.history.pushState("", "", "/"+page); 
    } else { 
     console.log("Yes it is main!"); 
     window.history.pushState("", "", "/"); 
    } 

    // Set page template 
    $('#main').loadTemplate('pages/'+page+'.html'); 
} 

Oben ist die Methode, die ich verwendete, um die URL und den Inhalt zu ändern, wann immer Benutzer auf den Link klickt.

Das Problem, das ich erfahre, ist, dass, wenn ich die Seite aktualisieren, wenn ein Pfadname auf der URL ist, die Seite 404 Fehler (nicht gefunden) zurückgibt und eine unbekannte leere HTML-Seite zurückgibt, die völlig leer ist (kein CSS und Skript geladen).

Zum Beispiel lautet die URL der Hauptseite http://localhost:8000, und wenn ich auf Seite A geklickt habe, wird die URL http://localhost:8000/pageA. Wenn ich die Seite in Seite A aktualisiere, wird sie jedoch leer zurückgegeben. Nur wenn ich die URL auf http://localhost:8000 zurücksetze, wird die Seite normal aktualisiert.

Gibt es eine Möglichkeit, diese leere Seite und pathname Problem zu beheben? Wie hat sich die pathname vor dem Laden des DOM geändert?

Dank

Antwort

3

window.history.pushState Verwenden Sie den Browser Standort und durch geschlagenen Seite aktualisieren ersetzen Sie Anfrage an den Server senden, und Sie fragen, um die Seite zu dienen, die Namen in der Adressleiste ist. Die Seite existiert jedoch nicht auf dem Server, daher antwortet der Server mit Nicht gefunden und das ist korrekt.

Sie haben zwei Möglichkeiten:

  1. Implementieren Sie die Seite auch auf der Serverseite
  2. Verwenden Client Routing-Hash verwendet (es gibt eine Menge von Bibliotheken für das, zum Beispiel http://projects.jga.me/routie/)
Verwandte Themen