jQuery Ajax laden und getScript
Ich versuche meine Website so, dass der Inhalt in der main-Gebiet geladen, die über javascript (einige Seiten eine Weile dauern zu Rendern). Aber, ich habe ein kleines logisches problem bei der Verwendung von jQuery.load(), jQuery.getScript und jQuery.ajax().
Ich muss in der Lage sein zu laden bestimmte javascript-Dateien per getScript, so dass ich diese Funktionen usw. innerhalb des geladenen Inhalts.
- index.php - Die main-Datei angezeigt wird (enthält auch #be)
- js/script.js - Die Datei mit der load-code
- js/*.js - Mehrere javascript-Dateien, die ich brauche, um in der Lage sein, um den Einsatz im #maincontent-nach dem laden
- load.php - Die Datei, in die geladen wird #maincontent
script.js:
$(document).ready(function() {
$('#loading').fadeIn('fast');
$('#maincontent').load('load.php', function() {
$('#loading').fadeOut('fast');
$('#maincontent').fadeIn('slow');
});
$('#navigation li a').click(function() {
$('#maincontent').fadeOut('fast');
$.getScript('js/jquery.contextMenu-1.01.js');
$.getScript('js/jquery-1.5.1.min.js');
$.getScript('js/jquery-ui-1.8.12.custom.min.js');
$.getScript('js/jquery.qtip-2.0.0.min.js');
$.getScript('js/ajax.js');
$.ajax({
method: 'get',
url: 'load.php',
data: 'page=' + $(this).attr('rel'),
beforeSend: function() {
$('#loading').fadeIn('fast');
},
complete: function() {
$('#loading').fadeOut('fast');
},
success: function(html) {
$('#maincontent').fadeIn('slow');
$('#maincontent').html(html);
}
});
});
$.getScript('js/jquery.contextMenu-1.01.js');
$.getScript('js/jquery-1.5.1.min.js');
$.getScript('js/jquery-ui-1.8.12.custom.min.js');
$.getScript('js/jquery.qtip-2.0.0.min.js');
$.getScript('js/ajax.js');
});
Wie Sie sehen können, bin ich versucht zu laden load.php ersten ohne URL-Parameter und der Interaktion durch den Benutzer. Obwohl load.php richtig geladen ist jedes mal, das gleiche kann nicht gesagt werden, für den javascript-code. Manchmal funktioniert es, manchmal muss ich die Seite aktualisieren, ein paar mal, bevor ich eine saubere Konsole (kein Fehler).
Den Fehler in der Konsole, schlage mich, dass der js-code nicht richtig geladen werden, bevor es verwendet wird im inneren load.php. Dies gilt insbesondere, wenn load.php dauert eine Weile (getestet mit PHP sleep(5) - Funktion).
Lassen Sie mich wissen, wenn ich etwas verdeutlichen 🙂
- Wenn Sie mit jQuery laden Sie Ihre PHP -, dann müssen Sie nicht brauchen, um es wieder über
getScript
. Ich empfehle, das laden alle Ihre javascript beim laden der Seite und nur das hinzufügen von Inhalten via load(), vermeiden Sie insbesondere das re-inklusive frameworks und plugins.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie sich nicht wirklich laden Sie alle diese Skripte mit getScript. Benötigen Sie einige (oder alle?) Sie jeder Zeit, also warum nicht nur sind Sie auf die Seite. Darüber hinaus, da Ihre ' E mit Hilfe von jquery zu laden, jquery, ich werde sagen, dass Sie bereits haben es auf der Seite. Also versuchen Sie nicht, laden Sie es erneut.
$(document).ready
. So, dass müsste in load.php so dass es ausgeführt würde, wenn load.php geladen war. Zu den anderen, die Bibliotheken können einfach in die index. Also ich denke du bist gut zu gehen.Wenn das problem mit dem timing der Lasten, sollten Sie erwägen, die neueste version von jQuery mit latenten Verhalten.
Könnten Sie zum Beispiel tun:
Diese werden warten, bis alle getScript ruft zurück und führen Sie dann den ajax-Aufruf load.php (oder wird es auslösen handleErrorsFunction (), wenn einer der oben genannten ausfällt).