2009-08-14 98 views
1

这个问题与我之前的问题有些相关(不需要通过它) link text ,虽然这一个更像是一个Ajax问题。蛋糕原型框架问题php

我测试我的网页的萤火,我收到以下错误

Event.Observe不是一个函数

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); 

我使用的开发我的蛋糕PHP应用程序原型框架。 我应该如何解决这个问题? 伙计们,我真的需要你们的帮助。我真的被困在这一个。 [:(]

+0

你检查是否原型加载正确在您的网站?在firebug中,你可以通过运行'$('form908983160')' – RaYell 2009-08-14 05:30:55

+0

@RaYell来轻松检查:如果我没有记错,萤火虫会通过itslef定义一个$函数;所以即使原型没有加载,这也可以工作;请参阅http://getfirebug.com/commandline.html – 2009-08-14 05:39:18

+0

是的,但默认实现不会找到您的元素和原型的意志。 – RaYell 2009-08-14 05:40:43

回答

1

prototype.js中必须是:

  • 在页面加载(验证它不是404,例如)
  • 加载页面的脚本执行前

这通常意味着你需要首先包含的prototype.js,并且,只有在这之后,你可以包括你的脚本。

一点题外话:你是不是在页面上使用任何其他JS框架,当然...

+0

由于我为我的应用程序使用了蛋糕php,我的prototype.js文件位于app/webroot/js文件夹中。此外,我在default.ctp文件中添加了 $ javascript-> link(array('prototype'))以产生链接到JavaScript文件。我还应该做什么? – 2009-08-14 05:43:58

0

记住任何Event.observers需要在全球

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

使用否则会不行。

对我来说,它看起来像连接到Prototype有问题。打开萤火虫,并尝试看到你的脚本文件的内容 - 如果你看到HTML,这意味着什么事情变得非常错误:-)