1

アクションと関連するビューを備えた CakePHP コントローラーがあります。コントローラーのアクションは、呼び出されると、一部のデータをデータベースに保存します (新しいレコードを作成します)。何らかの理由で 2 つのレコードが作成されていることに気付きました。2 つのレコードの唯一の違いは、数秒異なる date_created フィールドであるため、最初のレコードの数秒後に 2 番目の (重複した) レコードが作成されていることがわかります。タグ内のビューに含まれている 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 にスクリプトを含めると、この問題を回避できますか? コントローラー アクションが 2 回呼び出される原因となる JS スクリプトに関する同様の問題について、stackoverflow に関する質問に遭遇しました。彼らはディープリンクの問題について話していますが、それについて何をすべきかわかりません。

4

1 に答える 1

2

inline を true に設定して、ブラウザ内のソース コードを表示すると、スクリプト ファイルhttps://link.to.externalSite.com/script.jsが何回含まれますか? おそらく、複数のビュー要素によって追加されているのでしょうか?

于 2012-11-08T12:14:15.443 に答える