【问题标题】:Javascript in CakePHP view causes controller action to be called twiceCakePHP 视图中的 Javascript 导致控制器操作被调用两次
【发布时间】:2013-01-22 00:48:17
【问题描述】:

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

【问题讨论】:

    标签: php javascript cakephp


    【解决方案1】:

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

    【讨论】:

    • 谢谢 .. 当我在 safari 中“查看源代码”时,我只看到包含一次的脚本文件。万一这有帮助 - 表单中使用的提交按钮图像也包含在外部来源中。感谢您的回复。
    • 有可以与我们分享的实时页面吗?
    • 嗨 - 不抱歉,我现在在本地开发,无法共享实时页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多