Skripte in AJAX geladener Datei
sho
- javascript
Morjen,
also...ick verstehe folgendes nicht:
Ich habe 3 Test-Dateien.
<a href="#" onclick="$('#content').load('upload.html', function() {});">Upload</a>
-upload.html:
diese enthält folgende Zeilen
<form action="upload.php" method="post" id="uploadData" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="upload" />
</form>
-upload.php:
<?php
move_uploaded_file($_FILES['file']['tmp_name'], "uploaded_files/{$_FILES['file']['name']}");
echo $_FILES['file']['name'];
?>
WENN man (per localhost) die upload.html direkt aufruft, funktioniert der Upload in den vorgesehenen Ordner tipptopp. Wenn ich aber die upload.html per index.html geladen habe (was erstmal funktioniert), dann reagiert das Input-Feld nicht mehr! Also es öffnet sich bei Klick auf "Durchsuchen" bzw. in das Feld nicht mehr das Dateiauswahlfenster. Wahaharum ist das denn so? In dem Moment wird ja noch nicht mal das Skript ausgeführt..
Ich bitte um Erleuchtung..Danke :-)
VG
Wir bitten erst einmal um Erleuchtung, in welchem Browser Du diesen Code getestet hast und ob möglicherweise Fehler in der JS-Console zu finden waren.
jQuery hat die Angewohnheit, JavaScript-Schnipsel in nachgeladenem Code zu evaluieren. Falls es dabei zu Fehlern kommt, kann das zu solchen Ergebnissen führen.
Gruß, LX
Wir bitten erst einmal um Erleuchtung, in welchem Browser Du diesen Code getestet hast und ob möglicherweise Fehler in der JS-Console zu finden waren.
Gerne: Keine Javascript Fehler und in Firefox, Opera, IE (neueste) gleiches Problem ... Erleuchtend? :-)
Dann kann ich mir nur noch vorstellen, dass entweder auf das Formular oder dem Feld irgendwelche Events liegen, die return false oder event.preventDefault() innehatten oder aber ein anderes Node über dem input lag und die Clicks abgefangen hat.
Gruß, LX
Dann kann ich mir nur noch vorstellen, dass entweder auf das Formular oder dem Feld irgendwelche Events liegen, die return false oder event.preventDefault() innehatten oder aber ein anderes Node über dem input lag und die Clicks abgefangen hat.
Gruß, LX
Hm....Danke für die Einschätzung..ehrlich gesagt ist das Problem gelöst, seit ich ein übergeordnetes (ohnehin überflüssiges) DIV entfernt habe .. (warum konnte ich nicht wirklich nachvollziehen, vielleicht war es auch etwas anderes Zufälliges). Auf jeden Fall:
Habe ich das Problem WIEDER auf einer per .load() eingeladenen Seite im Content. Es handelt sich um Listebelemente, die per jQuery draggable sind. Wenn ich sie testweise direkt auf der Startseite im Contentdiv einfüge, funktioniert alles. Wenn ich sie per load in das Contentdiv hole, passiert nichts mehr. Die Funktion, die den Listenelementen mit der Klasse xy die Eigenschaft draggable gibt steht auf der index.html (ready()) im head. Aber ich will doch nicht die ganze Seite neu laden :-(
VG
Hallo,
Habe ich das Problem WIEDER auf einer per .load() eingeladenen Seite im Content. Es handelt sich um Listebelemente, die per jQuery draggable sind. Wenn ich sie testweise direkt auf der Startseite im Contentdiv einfüge, funktioniert alles. Wenn ich sie per load in das Contentdiv hole, passiert nichts mehr. Die Funktion, die den Listenelementen mit der Klasse xy die Eigenschaft draggable gibt steht auf der index.html (ready()) im head.
Zu diesem Zeitpunkt sind die Elemente, die Du nachlädst, noch nicht vorhanden. Selbstverständlich erhalten die nachgeladenen Elemente nicht automatisch die von Dir gewünschte Eigenschaft. Dafür musst Du schon nach dem Nachladen selbst sorgen.
Aber ich will doch nicht die ganze Seite neu laden :-(
Den Ajax-Einsatz für solche Minischnippsel halte ich für unsinnig. Allein der HTTP-Overhead ist enorm, von der zusätzlichen Komplexität ganz zu schweigen.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Dafür musst Du schon nach dem Nachladen selbst sorgen.
Das klingt natürlich logisch, darauf hätte man kommen können^^
Den Ajax-Einsatz für solche Minischnippsel halte ich für unsinnig. Allein der HTTP-Overhead ist enorm, von der zusätzlichen Komplexität ganz zu schweigen.
Hm..Dazu hab ich noch Fragen: In "Wahrheit" ist es kein Minischnipsel sondern eine aus der DB generierte Liste von Objekten und Dateien (Thumbs). Wäre das in dem Fall dann angebracht? Und andersherum habe ich in der Contentbox auch wirklich Inhalte mit Minischnipsel wie nur Kontaktdaten anzeigen und eine Suchfunktion. Wie würdest Du alternativ vorgehen statt AJAX zu benutzen, wenn sich nur kleine Teilbereiche ändern? Vielleicht übersehe ich ja eine kleinere bessere Möglichkeit :-/
DANKE
Freundliche Grüße
Vinzenz
Freundlichst zurück
sho
Schaue mal beim Aufruf von .draggable nach, ob die Elemente da schon vorhanden sind (ansonsten evtl. elementready statt document.ready verwenden).
Gruß, LX