【问题标题】:OctoberCMS using Ajax API with no-script fallback in page php sectionOctoberCMS 在页面 php 部分使用 Ajax API 和无脚本回退
【发布时间】:2019-05-10 11:52:59
【问题描述】:

我目前的简单联系表基础是:

一个页面包含表单和 php 部分中的表单验证,其原生函数如下:

function onStart(){if(Request::isMethod('post')) /* do stuff */}

以上是我的“无脚本”解决方案。

现在,当我想启用 OctoberCMS 的 Javascript API 时,我必须在 php 部分调用一个自定义函数,例如:

function onSubmit(){/* do stuff */}

无论请求是通过 Ajax 还是纯 php 发送,我如何将两者结合在一个函数中以便 /* do stuff */ 触发?

【问题讨论】:

  • 很高兴你回答了这个问题。我相信您可以为这个问题添加自己的答案,而不仅仅是编辑您的原始帖子。以便人们知道它已得到答复。
  • 谢谢你,会这样做的!

标签: php ajax laravel octobercms


【解决方案1】:

我找到了答案。

OctoberCMS 提供了一种本地方法让表单触发自定义onMyfunction(),只需使用另一种实现表单的方式。

对于任何可能遇到相同问题的人,这里是代码:

<?php
function onMyfunction(){}
?>
==
<html>
{{ form_open({ request: 'onMyfunction', id: 'my-form' }) }}
</html>

这会将发布数据发送到 php 处理程序,无论是否启用了 Javascript。 现在您只需要通过以下方式启动您的 Ajax API:

<script>
$('#my-form').submit(function(evt){
    evt.preventDefault();
    $(this).request('onMyfunction',{})
});
</script>

【讨论】:

    【解决方案2】:

    你能用html的&lt;noscript&gt;标签吗?在您的 css 中,您可以输入 .noscript {display:none;} .script {display:block;} 然后在您的页面、组件模板、布局等中,您可以有两种形式,根据用户是否使用脚本而改变。他们可以使用相同的onSubmit 函数。

    与我所做的任何网站的任何用户交互都假定有些网站可能不使用 Javascript,因此我默认使用标准表单而不是 js 或 ajax。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多