2017-05-19 2 views
0

Ich bin in der Mitte eines Problems. Ich habe einen Antrag gestellt, in dem ich DIV zugewiesen habe, um von Ajax geladen zu werden. Jedes der DIV entspricht einem bestimmten Modul (wie ein Modul, das sich auf Produktdetails bezieht, ein anderes DIV, das sich auf Preise und Verfügbarkeit bezieht). Jedes Modul ist eine URL.Wie man verhindert, dass Javascript mehrfach geladen wird

DIV1 --- für Produktdetails DIV2 --- Preis DIV3 --- catogorisation

diese sind alle DIVs asynchron geladen. Im Kategoriemodul habe ich spezielle JavaScript-Steuerelemente zum Durchsuchen von Kategorien als Baumansicht.

Das Problem, mit dem ich konfrontiert bin, wenn ich Javascript-Bibliothek in der Hauptseite platzieren, wird das Steuerelement nicht angezeigt. Und wenn ich die Bibliothek in die URL-Quellseite von DIV3 lege, wird sie mehrmals geladen und hängt meine Anwendung.

Meine Frage ist, wie ich verhindern kann, dass diese Bibliothek mehrfach geladen wird, wenn der Benutzer das DIV immer wieder aktualisiert.

Oder wenn es ein Design-Problem scheint, können Sie bitte Ihre Vorschläge für das richtige Design geben. Ich bin gespannt, wie ich die Bibliothek entladen kann. Ich bin Java-Programmierer und denke so. Ich kann etwas falsches Verständnis von JavaScript

Vielen Dank im Voraus arbeiten, haben
Jujhar

Antwort

1

Javascript-Code nicht nur dann ausgeführt werden muss, wenn Sie ein Skript-Tag laden. Wenn Sie einfach den relevanten Code in eine Funktion einfügen und ihn über den Erfolgsrückruf in Ihrer Ajax-Funktion aufrufen, können Sie dieses Problem leicht vermeiden.

  1. Verschieben <script> html Körper
  2. Wrap entsprechender Code in Funktion

Javascript

function myFunction() { 
    //... your code 
} 
  1. Anruf myFunction in Ihrem Ajax-Erfolg Rückruf

Ajax

$.get("/url", function(data) { 
    //add div to page 
    myFunction(); 
}); 
+0

Vielen Dank für Ihre Zeit. Es macht Sinn und ich habe es gerade umgesetzt. Nur noch eine Frage in meinem Kopf. In MyfFunction(), wenn ich Initialisierungsobjekt bin oder ich ein Objekt erstellen (wie eine Datentabelle erstellen), wenn Benutzer das DIV aktualisieren, erstellt es ein doppeltes Objekt nicht? Im ersten Fall wird ein ajax-Aufruf-Datentypenobjekt erzeugt, und wenn der Benutzer eine Aktualisierung vornimmt, wird myFunction() aufgerufen. Code wird ausgeführt und erstellt ein doppeltes Objekt. Es tut mir leid, diese dumme Frage zu stellen, ich kann Code einbeziehen, um zu prüfen, ob das DOM-Objekt bereits erstellt wurde, bevor ein neues erstellt wurde. Möchten Sie wissen, ob es anders geht? – user3598304

+0

Ich bin mir nicht sicher, was Sie meinen, indem Sie ein div auffrischen. Wenn Sie die Seite aktualisieren, wird alles von der Seite gelöscht, so dass es keine Duplikate gibt. –

Verwandte Themen