Wie wird die js-Datei in einen Ajax-Aufruf eingebunden?

9

Ich rufe eine Ajax-Methode auf, um ein div zu aktualisieren. Es enthält Links und Funktionen, die Java-Skriptdateien benötigen. Aber diese Methoden und Funktionen werden nicht richtig aufgerufen, da Java-Script-Dateien nicht durch einen Ajax-Aufruf eingebunden werden. Zum Beispiel versuche ich, eine Light-Box-Funktion aufzurufen, aber sie wird auf eine andere Seite und nicht in ein Light-Feld umgeleitet.

Vielen Dank im Voraus, Anubhaw Prakash

    
Anubhaw 20.04.2010, 08:19
quelle

7 Antworten

2

Das Ajax-Framework im Prototyp wird den Textinhalt von <script> -Tags korrekt ausführen, aber nicht neue Skriptdateien über <script src="somefile.js"/> importieren. Die einzige Lösung, die ich gefunden habe, ist, alle Javascript-Dateien, die ich brauche, in den Kopf der Seite zu importieren. Auf diese Weise sind die Funktionen in der importierten Datei für den JavaScript-Inline-Code verfügbar, der in der Ajax-Antwort ausgeführt wird.

    
Kevin 04.08.2010 16:04
quelle
1

Ich hatte ein ähnliches Problem, wo ich etwas Javascript hochladen wollte. Was ich getan habe, ist das Laden des HTML-Fragments und das Laden des Skripts in zwei Aufrufe. Zum Laden des Skripts rufe ich die folgende Funktion auf (ich habe JQuery mit dem Ajax-Teil):

%Vor%     
Daniel 07.08.2010 21:30
quelle
0

Ich sehe, dass Sie Ruby on Rails verwenden - bedeutet das, dass Sie Prototype auf dem Client verwenden? Wenn dies der Fall ist, ignoriert Prototyp Ajax.Updater Skript-Tags, die auf externe Dateien verweisen (es werden Skript-Tags ausgewertet, deren Inhalt inline ist). Um also diese externen Dateien zu Ihrer Seite hinzuzufügen, müssen Sie sich über den onSuccess -Rückruf in den Prozess einklinken, in den responseText für Skript-Tags mit src -Attributen suchen und diese selbst behandeln. Sobald Sie die relevanten Skript-Tags identifiziert und ihre src -Attribute extrahiert haben, können Sie sie hinzufügen, indem Sie die Skripts dynamisch hinzufügen, wie in Dieser Artikel aus dem inoffiziellen Prototype & amp; script.aculo.us Wiki.

    
T.J. Crowder 20.04.2010 08:32
quelle
0

<script> Tags, die in innerHTML geschrieben wurden, werden nicht zur Schreibzeit ausgeführt. Sie können element.getElementsByTagName('script') ausführen, um zu versuchen, sie zu erreichen und ihre Skripte manuell auszuführen, aber es ist sehr hässlich und nicht zuverlässig.

Es gibt langweilige Unterschiede zwischen den Browsern, was mit einem <script> -Element passiert, das in innerHTML geschrieben wurde, das dann (direkt oder über einen Vorgänger) wieder in das Dokument eingefügt wird. Sie möchten das vermeiden: Schreiben Sie nicht <script> s in innerHTML .

Dann müssen Sie sich auch keine Gedanken darüber machen, Skripte zweimal auszuführen, was Sie nie mit Bibliotheksskripten machen wollen. Sie wollen nicht mit zwei Kopien einer Funktion / Klasse enden, die gleich aussehen, aber nicht gleichwertig sind, und die Haken auf der Seite halten, die nicht gut miteinander spielen. Dynamisch eingefügte Bibliotheksskripts sind ein Rezept für verwirrende Fehler.

Es ist viel besser, Ihre Skripte statisch einzubinden und sie manuell an Seitenelemente zu binden, nachdem Sie neue Elemente auf die Seite geschrieben haben. Wenn Sie wirklich brauchen, können Sie Ihre AJAX-Aufrufe ein JSON-Objekt greifen lassen, das sowohl den neuen HTML-Code enthält, der hinzugefügt werden muss, als auch einen String-String, der ausgeführt werden soll.

    
bobince 20.04.2010 08:37
quelle
0

Möchten Sie versuchen, ein vorbereitendes JavaScript in der Option: before auszuführen, um eine Variable mit den richtigen Dateien einzurichten?

    
SilentNot 01.05.2010 12:27
quelle
0

hey ich habe einen Weg gefunden, es hinzuzufügen ....:)

HINWEIS - Dies ist ein synchroner Prozess, so dass Sie sich keine Gedanken darüber machen müssen, ob das Skript geladen ist oder nicht .... das Skript lädt immer die Instanz, ruft die Funktion auf und Sie können das geladene Skript sofort verwenden.

lässt diese 2 Funktionen verwenden

1) Erstens ist die Ajax-Funktion, um die Werte abzurufen wo async sollte wahr sein, um die Anfrage synchron zu senden

%Vor%

2) Dann verwenden wir Ajax, um die js-Datei als String zu laden und dann an die innereHTML des neuen Skript-Tags anzuhängen und sie dann an den head-Abschnitt anzuhängen und noch eine Sache, um sicherzustellen, dass die Datei bereits geladen ist, benutzte ich die ID des Skripts Tag als Pfad zur Datei, was es wirklich einfach macht, nach dem Duplikat zu suchen ...:)

%Vor%

danke für alle Hilfe, die ich bekommen habe und von dieser Seite und ihren Benutzern für die Entwicklungszwecke bekommen werde ...

Grüße VIPIN JAIN

    
Vipin Jain 03.01.2012 16:59
quelle
-2
  1. enthält statische Skripts auf Seiten, die sie verwenden müssen (IE enthält einen Leuchtkasten und dann das Lightbox-Skript)
  2. Problem gelöst. Laden Sie keine Skripts mit AJAX
  3. Machen Sie notwendige Funktionsaufrufe zu den statischen Skripten mit AJAX-Callbacks
Bob Gregor 05.08.2010 02:51
quelle

Tags und Links