我目前的简单联系方式基础是:
一个页面,其中包含表单和php部分中的表单验证以及本机函数,如下所示:
private void addClusterItems()
{
for (MarkerOptions markerOptions : listMarkers) {
ShelterObject clusterItem = new ShelterObject(markerOptions.getPosition(), markerOptions.getTitle(), markerOptions.getSnippet());
clusterManager.addItem(clusterItem);
}
}
以上是我的“无脚本”解决方案。
现在,当我想启用OctoberCMS的Javascript API时,我必须在php部分中调用一个自定义函数,例如:
function onStart(){if(Request::isMethod('post')) /* do stuff */}
无论请求是通过Ajax还是纯php发送的,我如何将两者组合成一个函数,以便function onSubmit(){/* do stuff */}
触发?
答案 0 :(得分: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>
答案 1 :(得分:0)
您可以使用html <noscript>
标签吗?在CSS中,您可以放置.noscript {display:none;} .script {display:block;}
,然后在页面,组件模板,布局等中放置两种形式,这些形式会根据用户是否使用脚本而有所不同。他们可以使用相同的onSubmit
函数。
与我创建的任何网站的任何用户交互都假设某些网站可能不使用Javascript,因此我默认使用标准格式,而不是js或ajax。