我有一个带有动作和相关视图的 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 脚本的类似问题导致控制器操作被调用两次的问题,他们谈到了深度链接的问题,但是我不明白该怎么做。