Antworten auf deine Fragen:
Neues Thema erstellen

JQuery - bind() blockiert bzw. wird nicht ausgeführt

Angel20093D

Noch nicht viel geschrieben

Hallo an alle,

wir haben ein merkwürdiges Problem:

Wir haben ein JS geladen, was die Checkboxen bindet und eine Funktion in Perl ausführt.

Lokal auf unserem Entwickler-PC (OS: Debian, Perl 5.10.1, JQuery, IDE Eclipse) funktioniert das ohne Probleme.

Nun haben wir die Webseite auf einem Server hochgeschoben. Wenn wir dann auf die Webseite gehen, wird bei den Checkboxen keine Aktion ausgeführt und per Firebug konnte ich nur feststellen, das er die Checkboxen scheinbar nicht bindet.

Was kann so ein Phänomen verursachen?

Die Webseite ist leider momentan noch nicht offiziell erreichbar, daher kann ich keinen Link bieten.

Laut meinem Kollegen sind auf dem Server wohl die gleichen Installationen bzw. Versionen der Module sein wie lokal.

Wir tappen momentan etwas im Dunkeln.

Ich weiß die Frage ist wie eine Suche der Nadel im Heuhaufen, aber vielleicht hat trotzdem jemand eine Idee oder gar Erfahrungen mit so einem Phänomen gesammelt.

K.a. was da auf dem Live-Server das JS Script blockieren kann.

Viele Grüße,

Angel
 

cebito

undefined

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Alle Dateien hochgeladen? Pfade stimmen noch? Bissl Code wäre sinnvoll hier zu posten bzw. auch die genaue Meldung im Firebug.
 

Angel20093D

Noch nicht viel geschrieben

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Ok, hier das betreffende Script:

Code:
$(document).ready   ( 
   function()  
   {     

  
$(".test_class") 
.each 
( 
function(i) 
{ 
$('#' + this.id) 
.bind 
( 
'click', 
function(e) 
{ 
if ($(this).attr("checked") == true) 
{ 
$('#gep_' + this.id).load( 
'/suche/test/' + this.id + '/1' + '/req=' + String(Math.random()).substr(2)); 

$('#anzeige_test' + i).text('getestet'); 
} 
else 
{ 
$('#gep_' + this.id).load( 
'/suche/test/' + this.id + '/2' + '/req=' + String(Math.random()).substr(2)); 

$('#anzeige_test' + i).text('ungetestet'); 
} 
return true; 
} 
); 
} 
);
In Firebug wird ansich nichts ausgegeben, das ist ja das Problem. Die Funktion ist an der Stelle tot. Habe nur mal Debugging in Firebug gemacht. Er geht zwar in die JS-Datei rein und auch in die Document Ready, aber mir kam es so vor, das er eben das bind nicht ausführt.

Die Pfade sollten stimmen, alles andere geht ja. Im Quelltext sind auch alle Scripts ordentlich eingebunden und der Quelltext lässt sich ebenfalls anschauen. Es ist ja alles da, wie lokal halt auch, denke ich mal.

Ob alle Dateien hochgeladen wurden, kann ich ja nochmal nach kontrollieren, aber ich denke schon, das ist so verzahnt, das beim Fehlen einer Perl Datei, die per Push die JS Dateien in das Template laden, mit Sicherheit sonst ein Blauer Perl Fehler kommen würde.

Im Prinzip haben wird das SVN eigentlich nur so hochgeschoben und machen jetzt inkrementelle Updates, von den Sachen, die halt geändert wurden.

Allerdings überlege ich mir grade, vielleicht doch noch mal alles zu löschen und im Gesamten nochmal hochzuschieben *grübel*

Danke erstmal, vielleicht haste ja ne Idee ;)

P.S.: Ich hoffe der Quelltext geht einigermaßen zu lesen, so richtig Formatieren mit Einrücken kann man den hier leider nicht bzw. haut er es dann bei mir gleich auf die nächste Zeile.....
 
Zuletzt bearbeitet:

saila

Moderatorle

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Auf einem üblich korrekt eingestellten Server wird JS nicht blockiert. Und wenn JS nicht unterstützt würde, ist es letztlich der Browser ;-) und der angehängte DOM bzw. deaktivertes JS.

Davon gehe ich allerdings nicht aus, da ansonsten überhaupt kein JS anzusprechen ist.

Das bind() ist ja im Grunde wie folgt aufgebaut:
Code:
$('input:checkbox').bind('click, change' function() { /* weitere Aktionen */ });

Die Frage ist nun, ob das bind() korrekt umgesetzt ist und was innerhalb von bind() letztlich passieren soll. Ist z.B. ein post, get ode ajax Aufruf innerhalb der Methode, so ist zu prüfen, ob der Parameter korrekt (also die url) korrekt eingebunden ist. Oder letztlich auch die anderen Parameter wie data, dataType usw..

Wie cebito schon geschrieben hat, Scriptcode ist hier zwingend erforderlich. Prüfe also zuerst das was cebito schon genannt hat "PATH" zur js-Datei und ansonsten die Parameter innerhalb des bind().
 

saila

Moderatorle

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Ok, hier das betreffende Script:

Code:
$(document).ready   ( 
   function()  
   {     

  
$(".test_class") 
.each 
( 
function(i) 
{ 
$('#' + this.id) 
.bind 
( 
'click', 
function(e) 
{ 
if ($(this).attr("checked") == true) 
{ 
$('#gep_' + this.id).load( 
'/suche/test/' + this.id + '/1' + '/req=' + String(Math.random()).substr(2)); 

$('#anzeige_test' + i).text('getestet'); 
} 
else 
{ 
$('#gep_' + this.id).load( 
'/suche/test/' + this.id + '/2' + '/req=' + String(Math.random()).substr(2)); 

$('#anzeige_test' + i).text('ungetestet'); 
} 
return true; 
} 
); 
} 
);
In Firebug wird ansich nichts ausgegeben, das ist ja das Problem. Die Funktion ist an der Stelle tot. Habe nur mal Debugging in Firebug gemacht. Er geht zwar in die JS-Datei rein und auch in die Document Ready, aber mir kam es so vor, das er eben das bind nicht ausführt.

Die Pfade sollten stimmen, alles andere geht ja. Im Quelltext sind auch alle Scripts ordentlich eingebunden und der Quelltext lässt sich ebenfalls anschauen. Es ist ja alles da, wie lokal halt auch, denke ich mal.

Ob alle Dateien hochgeladen wurden, kann ich ja nochmal nach kontrollieren, aber ich denke schon, das ist so verzahnt, das beim Fehlen einer Perl Datei, die per Push die JS Dateien in das Template laden, mit Sicherheit sonst ein Blauer Perl Fehler kommen würde.

Im Prinzip haben wird das SVN eigentlich nur so hochgeschoben und machen jetzt inkrementelle Updates, von den Sachen, die halt geändert wurden.

Allerdings überlege ich mir grade, vielleicht doch noch mal alles zu löschen und im Gesamten nochmal hochzuschieben *grübel*

Danke erstmal, vielleicht haste ja ne Idee ;)

Bei checkboxen ist das so ein Thema (finde ich immer wieder) zum einen (was allerdings in diesem Fall ein Nebenthema ist) werden sie bei einem POST nicht übergeben, sofern nicht checked und in diesem Fall passiert folgendes:

Du klickst auf die Checkbox. In diesem Moment wird sie erst als checked gesetzt und ist in sofern als checked nicht sofort erkennbar. Das kannst du prüfen mit
Code:
console.log(this.checked);
über den firebug -> konsole.

Das bedeutet letztlich, wenn der Fehler wirklich daran liegt, dass du das handling um die checkbox als checked true zu erhalten ändern musst.
 

Angel20093D

Noch nicht viel geschrieben

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Naja, aber was ich nicht verstehe:

Warum funktioniert es dann lokal auf unserem Entwickler-PCs??

Das ist das wirklich richtig verwirrende für uns an der Stelle, aber danke erstmal, das mit dem Handling habe ich jetzt zwar noch nicht ganz kapiert, aber ich muss wahrscheinlich nochmal lesen, um es richtig zu verstehen, was ich ändern muss *g*
 

saila

Moderatorle

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Naja, wenn es zu 100% auf der Entwicklungsumgebung läuft, dann kann es nur an Pfaden liegen, wie die JS eingebunden wird. Im Browser kann man das ja prüfen, in dem man auf den Link im meta der JS klick (ist zumindest im Firefox so). Kommt die Datei mit ihren Inhalten ok. Wenn nicht, stimmt der path nicht.
 

Angel20093D

Noch nicht viel geschrieben

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Ja die kommt mit Inhalt, hatte ich oben auch geschrieben, das ist es ja *Schulter zuck*

Es ist zumindest wenn man drüber guckt alles korrekt eingebunden.

Lokal greift eben das obere JS und führt die Funktion aus -> erscheint dann auch im Firebug in der Konsole.

Im Live-System nicht, da erscheint auch nix in der Konsole.

Durch den Haltepunkt sah ich aber, das er zumindest in die JS-Datei reingeht. Aber eben wohl nicht das Bind ausführt.

Das einzigste was wir noch im Live-System zusätzlich haben ist eine piwik.js zur statistischen Erfassung.

Die habe ich zum Test lokal allerdings auch mal dazugeschaltet um die "gleichen" Bedingungen zu haben wie im Live-System. Allerdings hat sie kein Prob verursacht. Auch dann ging die bind Funktion.

So ein Mist, wir müssen das hinkriegen, das ist ne total wichtige Funktion für den Kunden :(
 

saila

Moderatorle

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

gibt es eine url oder adresse um sich das anzusehen? Würde das selbst gerne mal über die Konsole sehen. Habt ihr mal in den if/else zweig auch entsprechende ausgaben wie z.B.
if-Zweig: console.log('if');
else-Zweig: console.log('else');

um zu sehen, in welchen Zweig geleitet wird?
 

Angel20093D

Noch nicht viel geschrieben

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Leider ist die Webseite noch nicht offiziell online, ich kann leider noch keinen Link anbieten. Der offizielle Start ist Januar 2011.

Aber das mit dem console.log() teste ich mal, danke für den Tip ;)
 

saila

Moderatorle

AW: JQuery - bind() blockiert bzw. wird nicht ausgeführt

Achte darauf, dass du das nur in FF einsetzen kannst. Ist console.log später noch im Quellcode vorhanden, gibt es im IE eine Fehlermeldung!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.636
Beiträge
1.538.496
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben