5 Stimmen

Wie sollte sich eine AJAX-Anwendung verhalten, wenn Javascript deaktiviert ist - gängige Praxis?

Ich bin in den Prozess der Entwicklung ziemlich grundlegenden Web-Anwendung, das ist vor allem so konnte ich lernen, jQuery/ajax/php auf dem Weg (und haben etwas Spaß). Ich möchte es so zugänglich für Benutzer wie möglich zu machen, so sollte es mit Javascript deaktiviert, validieren zu AAA und all das funktionieren. Mit JS deaktiviert wäre natürlich ohne alle Glocken und Trillerpfeifen, aber dennoch sollte die Arbeit zu tun.

Ich möchte Ajax gut nutzen, aber ich verstehe nicht ganz, wie ich damit umgehen soll, wenn JS ausgeschaltet ist.

Sagen wir also, JS ist eingeschaltet, der Benutzer gibt das Formular ab, klickt auf die Schaltfläche "Absenden" und über Ajax werden die Daten an register.php übermittelt (register.php ist im Aktionsattribut des Formulars angegeben). register.php gibt die Daten zurück und jQuery zeigt die entsprechende Meldung an. Alles ohne Neuladen der Seite.

Nun, wenn JS deaktiviert ist, wird die Übermittlung des Formulars an register.php nicht viel nützen.

So wie ich es verstehe, wäre die Lösung, ein PHP-Skript für JS aktiviert, andere für JS deaktiviert zu erstellen. So standardmäßig Form würde Aktion Attribut mit haben nonjs_register.php und wenn JS aktiviert ist, wird das Formular zwangsweise an js_register.php statt Standard nonjs_register.php . Ich kann mir vorstellen, dass es ziemlich mühsam wäre, für jede Benutzerinteraktion mit der Anwendung zwei Skriptseiten zu erstellen, aber das ist die einzige Möglichkeit, die mir im Moment einfällt.

Ich hoffe, das macht alles Sinn, aber bitte lassen Sie mich wissen, wenn meine Erklärung nicht ganz klar ist. Wenn mir jetzt jemand erklären könnte, was die übliche Praxis ist, um mit dieser Art von Problem umzugehen, wäre das großartig.

2voto

Chris Fulstow Punkte 39665

Werfen Sie einen Blick auf die Hijax-Technik Es ist eine Möglichkeit, AJAX als schrittweise Anhebung .

2voto

Andy E Punkte 324972

Die Art und Weise, wie ich mit dieser Art von Dingen umgehen würde, ist die Verwendung eines Ereignisses mit Javascript, das die Standardaktion des Formulars aufhebt. Die Standardaktion des Formulars ist die Übermittlung an eine andere URL:

html

<form id="AjaxForm" action="/nonJS_register.php" method="POST">
   <!-- form input elements -->
</form>

js

document.getElementById("AjaxForm").onsubmit = function ()
{
     //- do ajax posting...
     ajaxPostForm();

     //- Cancel the default action of the form
     event.preventDefault();
     return false;
}

Die Ajax-Funktion könnte an nonJS_register übergeben werden, oder Sie könnten sogar einfach einen Parameter hinzufügen, der dem Skript mitteilt, die Daten in einem anderen Format und nicht in HTML gekapselt zurückzugeben.

2voto

dusoft Punkte 10986

Das Rezept ist sehr einfach:

  1. immer alles auf die Seite ziehen bevor JS überhaupt aufgerufen wird.
  2. dann alles über JS ändern - z. B. Elemente ausblenden Elemente nach Bedarf ausblenden usw.
  3. AJAX muss sich an die Ereignisse anschließen und die die ursprünglichen Ereignisse (z.B. das Klicken der Link führt Sie zu einer anderen HTML/PHP generierten Seite ohne JS verfügbar, aber mit JS verfügbar können Sie können Sie die Ziele so ändern, dass sie nur AJAX abrufen und false zurückgeben, so dass der Klick nicht die Seite nicht tatsächlich ändern)

1voto

Chris Gutierrez Punkte 4670

Das Beste, was ich vorschlagen könnte, wäre es zu bauen, wie Sie es wollen, um ohne die AJAX-Aufrufe zu arbeiten. Auf diese Weise können Sie ein genaues Bild davon bekommen, wie es mit deaktiviertem JavaScript funktionieren wird. Fangen Sie dann an, Ihr JavaScript einzubauen und testen Sie weiter mit/ohne aktiviertem JavaScript.

1voto

Alex Bagnolini Punkte 21204

Wenn Sie AJAX verwenden, um einen WESENTLICHEN Teil einer Seite zu implementieren, dann muss die gesamte Seite Javascript erfordern.

Darauf müssen Sie hinweisen, BEVOR Sie mit der Umsetzung beginnen.

Wenn Sie Javascript optional machen wollen, dann können Sie nicht AJAX verwenden, um die gesamte Kommunikation zu implementieren. Sie müssen Postbacks verwenden und eventuell die "Klick"-Ereignisse von Schaltflächen überschreiben, um das Postback asynchron zu machen (auch mit AJAX).

Ich würde Ihnen also vorschlagen, die Seite so zu schreiben, als ob Sie kein Javascript hätten, und dann einige Funktionen später zu überschreiben, wenn Javascript aktiviert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X