2009-08-14 9 views
1

Diese Frage ist etwas mit meiner vorherigen Frage verbunden (nicht notwendig, um durch sie hindurchzugehen) link text , obwohl dieser mehr ein Ajax-Problem ist.Problem mit Prototyp-Rahmen in Kuchen php

ich meine Seite in Firebug getestet und ich die folgende Fehlermeldung erhalten

Event.observe ist keine Funktion

Event.observe('form908983160', 'submit', function(event) { new Ajax.Updater('comments','/blog/posts/comments/add', {asynchronous:true, evalScripts:true, parameters:Form.serialize('form908983160'), requestHeaders:['X-Update', 'comments']}) }, false); 

Ich bin mit dem Prototyp Rahmen meiner Kuchen PHP-Anwendung zu entwickeln. Wie soll ich dieses Problem beheben? Jungs, ich brauche deine Hilfe wirklich in diesem. Ich bin wirklich fest hier. [:(]

+0

Haben Sie überprüft, ob der Prototyp korrekt auf Ihrer Website geladen wird? IN firebug können Sie dies leicht überprüfen, indem Sie '$ ('form908983160')' – RaYell

+0

@RaYell: wenn ich mich richtig erinnere, definiert Firebug eine $ -Funktion von itslef; Das funktioniert auch, wenn der Prototyp nicht geladen ist. siehe http://getfirebug.com/commandline.html –

+0

Ja, aber die Standardimplementierung wird dein Element und den Prototyp nicht finden. – RaYell

Antwort

1

prototype.js sein muss:

  • in der Seite geladen (überprüfen, es ist nicht zum Beispiel in 404)
  • auf der Seite vor der Ausführung des Skripts geladen

die in der Regel bedeutet, dass Sie benötigen prototype.js umfassen erste, und erst danach können Sie Ihre Skripte enthalten.

Als Nebenbemerkung: Sie in dieser Seite nicht mit einem beliebigen anderen JS Framework, natürlich ...

+0

Da ich Kuchen-PHP für meine Anwendung verwende, liegt meine prototype.js-Datei im app/webroot/js-Ordner. Darüber hinaus habe ich $ JavaScript-> Link (Array ('Prototyp')) in default.ctp Datei hinzugefügt, um einen Link zu der Javascript-Datei zu erzeugen. Was soll ich sonst machen? –

0

Denken Sie daran, dass alle Event.observers in globalen

Event.observe(window,'loaded',f); 
// or 
Event.observe(document,'dom:loaded',f) 

anderweitig verwendet werden müssen, werden sie nicht arbeiten.

Für mich sieht es so aus, als ob es Probleme mit der Verknüpfung mit Prototype gibt. Öffnen Sie firebug und versuchen Sie den Inhalt Ihrer Skriptdateien zu sehen - wenn Sie html sehen, bedeutet das, dass etwas schrecklich schief gelaufen ist :-)