1

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

echo $this->Html->script('https://link.to.externalSite.com/script.js', array(
  'inline' => true
));

当我将 'inline' => true 更改为 false 时,问题就消失了,只有 1 条记录按我的预期添加到数据库中。但是,出于我的目的,我需要设置 inline => true 的脚本。

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

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

我想知道这是否是因为脚本是从外部 url 加载的?如果我将脚本包含在我的 webroot 中,我会避​​免这个问题吗?我在 stackoverflow 上遇到了关于 JS 脚本的类似问题导致控制器操作被调用两次的问题,他们谈到了深度链接的问题,但是我不明白该怎么做。

4

1 回答 1

2

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

于 2012-11-08T12:14:15.443 回答