CakePHP视图中的Javascript导致控制器操作被调用两次

时间:2012-11-08 12:10:38

标签: php javascript cakephp

我有一个带有动作和相关视图的cakephp控制器。控制器中的操作在调用时将一些数据保存到数据库(它会创建一个新记录)。我注意到由于某种原因创建了2条记录。 2个记录之间的唯一区别是date_created字段,它相差几秒钟,所以我知道第二个(重复)记录是在第一个记录之后的几秒钟创建的。我已经能够将问题缩小到包含在标签内的视图中的一些javascript。我使用 -

在视图顶部包含一个.js文件
echo $this->Html->script('https://link.to.externalSite.com/script.js', array(
  'inline' => true
));

当我更改内联' =>如果为true,则问题消失,只有1条记录按照我的预期添加到数据库中。但是我需要脚本集inline =>对我来说是真的。

单击表单上的提交按钮时,将触发视图页面中的标记,如下所示 -

<script type="text/javascript" charset="utf-8">
    var myVar = new .......... ({trigger: 'submitBtn'});
</script>

我想知道这是否是因为脚本是从外部网址加载的?如果我在我的webroot中包含脚本,我会避免这个问题吗?我遇到过有关JS脚本类似问题的stackoverflow问题,导致控制器操作被调用两次,他们讨论了深层链接的问题,但是我不知道如何处理。

1 个答案:

答案 0 :(得分:2)

如果内联设置为true,当您查看浏览器内的源代码时,脚本文件https://link.to.externalSite.com/script.js包含多少次?也许它被多个视图元素添加?