Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OctoberCMS使用Ajax API,在页面php部分没有脚本回退_Php_Ajax_Laravel_Octobercms - Fatal编程技术网

OctoberCMS使用Ajax API,在页面php部分没有脚本回退

OctoberCMS使用Ajax API,在页面php部分没有脚本回退,php,ajax,laravel,octobercms,Php,Ajax,Laravel,Octobercms,我目前使用的简单联系方式是: php部分中包含表单和表单验证的页面,其本机函数如下: function onStart(){if(Request::isMethod('post')) /* do stuff */} 以上是我的“无脚本”解决方案 现在,当我想启用OctoberCMS的Javascript API时,我必须调用php部分中的自定义函数,例如: function onSubmit(){/* do stuff */} 我如何将两者结合在一个函数中,使/*do stuff*/触发,而

我目前使用的简单联系方式是:

php部分中包含表单和表单验证的页面,其本机函数如下:

function onStart(){if(Request::isMethod('post')) /* do stuff */}
以上是我的“无脚本”解决方案

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

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

我如何将两者结合在一个函数中,使
/*do stuff*/
触发,而不管请求是通过Ajax还是纯php发送的?

您可以使用html
标记吗??在css中,您可以放置
.noscript{display:none;}.script{display:block;}
然后在页面、组件模板、布局等中,您可以有两种形式,它们根据用户是否使用脚本而变化。它们可以使用相同的
onSubmit
函数

与我创建的任何站点进行的任何用户交互都假定某些站点可能不使用Javascript,因此我默认使用标准表单,而不是js或ajax。

我找到了答案

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

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

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

==
{{form_open({request:'onMyfunction',id:'my form'}}}
这将把post数据发送到php处理程序,不管是否启用了Javascript。 现在,您只需通过以下方式启动Ajax API:

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

$(“#我的表格”).submit(函数(evt){
evt.preventDefault();
$(this.request('onMyfunction',{})
});

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