控制器动作被调用两次--- Php应用程序

时间:2010-08-17 16:53:10

标签: php javascript css ajax

我是新手,所以如果我遗漏了一些信息,请告诉我,我会提供。我已经查找过有关此错误的信息,但我还没有发现任何相关内容。 所以,这是交易..我的一些控制器操作被调用了两次,我刚刚注意到,当我想知道为什么我发送了两次邮件时(我的应用程序已经有一个电子邮件客户端)...然后在记录我正在做的事情后,我注意到控制器被调用了两次......顺便说一下,这只发生在我从应用程序外部的链接调用动作或键入url时。 如果我没有说清楚或者我错过了什么,请在这里发帖,以便我可以添加更多信息..

提前致谢!

6 个答案:

答案 0 :(得分:7)

根据我的评论汇总other sources的可能答案:

  1. < img src =“”/> 和亲戚。

    如果您有生成 img 标记的 src 属性的位置,请确保在任何怪胎情况下它都不为空;少数浏览器将空src作为再次加载页面的提示。 123

    对于空的favicon,javascript或css href 也是如此 - 通常是您要求浏览器获取外部资源的任何内容,但是没有提供url,即使在css 1

    如果您考虑,例如,当您执行< form action =“”> (或甚至只是)时您发送表单数据的位置,这种现象可能更容易理解< form> ) - 即同一页。

  2. .htaccess shenanigans。

    检查您的重写规则:您是否让服务器对您的脚本进行任何静态内容的往返(例如,favicon 1 )?不存在的文件是否触发对脚本的调用,并且是指向一个的外部资源链接(例如,最终从文件系统中删除但有人忘记将其从HTML源中删除的古老css样式表)?

  3. 基于浏览器的调试程序。

    某些基于浏览器的调试程序,例如firebug 1 ,将根据情况向页面发送第二个请求,以收集浏览器本身未提供给他们的数据。确保你没有得到它。

  4. 看看是否有任何帮助你。

答案 1 :(得分:2)

如果没有看到实际的应用程序代码,我只能猜测 - 但是,我知道这个领域至少有一个半知名的bug,详见http://blog.codekills.net/archives/27-Fun-with-Firefox-Jitters.html - 基本上,它发生在<tr>有一个onclick处理程序,里面有<a>到同一个网址...即使这不是你的应用程序的功能,也许你可以从看到它们的运行方式中获得一些见解调试问题。

答案 2 :(得分:2)

对我来说,让Firebug打开会导致页面被调用两次。

答案 3 :(得分:0)

经过数小时的调试,我的问题是动态设置的背景图像css标记。如果没有图像 - background-image:url() - 一旦页面加载,第二个请求将被返回给控制器。

以防其他任何人也这样做。

答案 4 :(得分:0)

我的问题的特定版本并修复

  • 提交此表单适用于生产服务器,但不适用于“localhost”
  • 对于Firefox:表格在两个地方都有效。对于Chrome:仅适用于生产服务器
  • 在我的问题控制器中设置了断点,确认它被多次调用(duh),并且该表单上的CSRF保护因此被gibbered了。

然后我找到了这个帖子:http://ellislab.com/forums/viewthread/210318/

我的解决方案涉及到favicon。 src属性不太正确。我确实在根目录中有一个favicon,它在hompage上加载但不在其他目录上加载(暂时没有注意到)。无论如何,提供favicon的绝对路径解决了它

不知道你是否必须有一个favicon,但如上所述,请确保你所引入的任何资源(img / js / css)都被正确引用,以避免浏览器重试请求页面

答案 5 :(得分:0)

在我的代码点火器视图上,我有一个表格。表单具有Post方法,该方法调用controllerA的url。在单击表单中的“添加”按钮时,我正在调用一个用于验证电子邮件ID的Javascript函数。在验证了.js中的电子邮件之后,我使用$ .post(url ...)将一些数据发布到controllerA以便数据库插入。插入发生了两次。

原来,在$ .post(url)中,我正在调用controllerA url。 当我评论$ .post时,数据库插入工作正常。

相关问题