php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.03.2009, 19:13  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard [Erledigt] jQuery Dateien nachladen

Ja, ich weiß, die Frage wurde bestimmt schon andauernd gestellt. Muss leider trotzdem nochmal fragen, weil ich nichts passendes gefunden habe.

Hi erstmal!

Ich finde mittlerweile jQuery toll, bin aber doch noch sehr Anfänger in JS. Bin aber bei PHP schon bei den Design Patterns angelangt.

Ich muss bei den AJAX-Requests alles in die Callbackfunction stopfen, wenn man davon mehrere hat, dann schachtelt sich das langsam.
Mein Oberflächenaufbau ist einem WebOS ähnlich, die Seite soll eigentlich gar nicht neuladen, benötigte Daten werden per AJAX nachgeladen. Ich parse sogar JS seitig, dafür habe ich Templates.
Hier schiebe ich gleich meine erste Frage ein:
Inwieweit wird ein Server durch einen puren Dateinachladevorgang gestresst? Das ist doch das selbe, wie wenn man ein Bild laden muss, oder?
Zurück zum Geschachtel vom Anfang. Ich hab jetzt das Templatenachladen direkt in eine zughörige Cache/Registry Klasse verlagert (statisch) und möchte jetzt bei Bedarf das Template nachladen.

Code:
Template.get = function(id) {
    for (var i = 0; i < Template._registry.length; i++) {
        if (Template._registry[i]._id == id) {
            return Template._registry[i]._tpl;
        }
    }
    return Template._requestTpl(id);
}
Schön. Jetzt hab ich das übliche Problem mit der Asynchronität, wie implementiere ich das, ohne auf einen nicht-asynchronen Request zurückzugreifen? Wo muss ich das jQuery typische Callback rumschleifen?
Mir fehlt die Implementierung von Template.requestTpl = function..

Ich habe hier bereits gepostet jQuery Dateien nachladen - AJAX (Asynchronous JavaScripting and XML) Forum, warte allerdings immer noch auf Antwort. Ich sitze etwas untätig herum, daher poste ich hier nochmal, da ich weiß, dass die Forenaktivität besser ist, auch wenn hier eher PHP Experten zu finden sind..
__________________
Phoscur ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.03.2009, 22:53  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Das Einzige, was du tun kannst ist, ein Handle auf das Requestobjekt zurückzuliefern. Den Inhalt selbst kannst du natürlich nicht übergeben, da der zu dem Zeitpunkt noch nicht da ist.
Ich würde es aber viel eher umgekehrt machen und eine generische Methode schreiben, die nach einem AJAX-Request die Daten entweder an ein Callback übergibt oder den Kram direkt in einen per Parameter übergebenen DOM-Knoten einfügt. So hast du das AJAX-Objekt selbst gekapselt und kannst es bei Bedarf sogar austauschen.

Die Serverlast hängt sehr von den Datenmengen ab. Mit Bildern würde ich es jetzt nicht unbedingt vergleichen, da diese meist ja nur einmal geladen werden. Mehr als ein AJAX-Chat wird die Last aber nicht ausmachen.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 12.03.2009, 23:03  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Naja, ich wollte die Templates eigentlich auch nur ein einziges Mal laden lassen, immerhin läd die Seite eh nicht neu. Warum lässt sich das nicht mit dem Laden eines Bildes vergleichen? Was muss man tun, damit es sich besser entspricht?

Also muss ich in die Template.get() Funktion schon ein Callback einbauen, ok. Gibt es Möglichkeiten den Schachtelungslevel zu kürzen? Wahrscheinlich nur durch einschließen in Funktionen...
Irgendwann sieht das halt so aus:
Code:
callback {
    callback {
         callback {
...
Naja, ma sehn, vielleicht wird es doch nicht so kritisch wie ich es bisher sehe. Bin noch Anfänger in Sachen AJAX..
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 12.03.2009, 23:10  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Naja, Bilder werden einmal am Anfang geladen und liegen dann im Cache. Inhalte werden meistens aber nicht gecached und werden somit immer wieder neu geladen. Außerdem findet das Laden nicht nur einmal pro Seite statt, sondern kann durchaus wiederholt werden. Nimm es als eine Seite mit vielen kleinen Bildchen.

Als Callback musst du ja nicht immer anonyme Methoden verwenden. Da JavaScript auch Methoden wie Variablen/Eigenschaften behandelt, kannst du diese auch als Wert bzw. Referenz übergeben:
Code:
function myMethod() {
    // ...
};

var callback = myMethod;
Wichtig ist nur, dass du die Klammern weglässt, da du sonst den Rückgabewert und nicht die Methode selbst übergibst.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 13.03.2009, 14:27  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Ist das nun so korrekt?
Code:
Template.get = function(id, callback) {
    for (var i = 0; i < Template._registry.length; i++) {
        if (Template._registry[i]._id == id) {
            callback(Template._registry[i]._tpl);
            return true;
        }
    }
    $.get('tpl/ajax/' + id + '.tpl', function (data) {
        Template._set(id, data);
        callback(data);
    });
    return false;
    //throw 'Template(registry): element not found';
}
Hab zwar noch so meine Probleme mit JS, gefällt mir aber trotzdem ganz gut. Klasse während der Laufzeit erweitern... nett.
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 14.03.2009, 13:08  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Okay. Neues, aber immer noch verknüpftes Problem, ich habe aber schon eine Ahnung wo es dran liegen könnte.

Code:
$tpl._set('widget','<div class="widget">\n<!--div-->\n    <div id="{id}">\n        {html}\n    </div>\n<!--div-->\n</div>');
$(function(){
    $.getJSON('get.php?file=test', function(data){
	    $tpl.extend('widget', 'test', function(){
            $tpl.bindTo('test', data, {'root':'div', 'appendTo':'body'});
        });
    });
});
TemplateRegistry
jBind (jQuery Template) Latest Version
Ich vermute meinen Fehler aber schon im oberen Code in der 4ten Zeile. Eben dieses Schachtelgedöns.
Ich will aber data binden, wenn auch erst im Callback von extend.. Gibt es da einen einfachen Weg das zu übergeben?

Edit. Nein ist es nicht. Ein alert(data) ergibt ein Objekt.
Ich hab noch so meine Probleme effektiv zu debuggen...
Der Fehler muss wohl in meiner Template Klasse zu finden sein, könnte sich das Jemand ansehen?
__________________

Geändert von Phoscur (14.03.2009 um 13:11 Uhr).
Phoscur ist offline   Mit Zitat antworten
Alt 14.03.2009, 13:40  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Was ist denn das Problem?
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 14.03.2009, 13:44  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Keine JS Fehler, aber nicht das gewünschte Resultat (ein geparstes Templates, also Anzeige von Testdaten).
Es funktioniert alles. Habe vom Array auf ein Objekt zum speichern (assoziatives Array) umgeschaltet, weil Werte doppelt eingetragen wurden und ich zu faul war da vorher eine Prüfung zu implementieren.
(Habe eben erst vom Arrayoperator [] auf Objekte gelesen...)

Ich hab noch Probleme mit Sichtbarkeiten, aber da werde ich wohl noch ein paar Erfahrungen machen müssen.
__________________
Phoscur ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
jQuery Plugin - so richtig? stayInside JavaScript, Ajax und mehr 5 23.02.2009 12:34
[Erledigt] timeout bei Dateien einlesen Hape42 PHP Tipps 2008 10 24.12.2008 11:20
[Erledigt] Dateien die nicht dem Suchkriterium entsprechen automatisch löschen djscaleo PHP Tipps 2008 4 11.11.2008 14:28
[Erledigt] Alle Dateien eines Ordner und aller Unterordner aufrufen und die Größe ber BartTheDevil89 PHP Tipps 2008 6 12.08.2008 19:17
PHP Dateien verschlüsseln GSJLink PHP-Fortgeschrittene 2 26.04.2008 12:29
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
nur bestimmte Dateien aus einem Verzeichnis auslesen Madden PHP Tipps 2006 2 07.03.2006 17:10
[Erledigt] Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen Server, Hosting und Workstations 2 16.10.2005 10:13
Dateien löschen (mit "unlink") PHP Tipps 2005-2 8 09.06.2005 22:55
[Erledigt] Nur bestimmte Dateien anzeigen, wie mache ich das HILFE PHP Tipps 2005 4 02.04.2005 22:38
dateien zugänglich machen PHP Tipps 2004 8 22.10.2004 14:25
Mit PHP erzeugte Dateien besitzen die falschen Rechte PHP Tipps 2004 3 14.09.2004 12:54
[Erledigt] PHP Dateien auf Server einsehen - Verschlüsseln PHP Tipps 2004 6 12.09.2004 10:17
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07
[Erledigt] Dateien können nicht erzeugt werden PHP-Fortgeschrittene 10 03.06.2004 16:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery nachladen, jquery bilder nachladen, jquery bild nachladen, jquery ordner auslesen, jquery xml auslesen, jquery seite neu laden, jquery daten nachladen, jquery html laden, jquery verzeichnis auslesen, jquery html nachladen, jquery php nachladen, jquery javascript nachladen, jquery php laden, jquery datei einlesen, jquery inhalte nachladen, bilder nachladen jquery, jquery bild laden, http://www.php.de/javascript-ajax-und-mehr/52836-erledigt-jquery-dateien-nachladen.html, jquery datei laden, jquery script nachladen

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum