如何在octbercms中使用ajax或javascript动态更改表单的方向



我有一个表单,当我提交它时,我希望它重定向我在另一页中,

知道重定向路径必须是动态的,

这意味着我使用了一个javascript函数,它接受用户的选择并返回一个字符串

ajax处理程序数据请求重定向只接受字符串而不执行javascript代码:


title = "test"
url = "/test"
layout = "default"
is_hidden = 0
==
<?php
function onStart()
{
$this['example'] = Session::get('example-key');
}
function onTest()
{
Session::put('example-key', input('my-input'));
}
?>
==
<form   method="POST"  data-request="onTest" data-request-redirect="......" name="formu" accept-charset="UTF8"  enctype="multipart/form-data">

<input type="text" name="my-input">
<button type="submit">Submit</button>
</form>
{% if example %}
<strong>Example: {{ example }}</strong>
{% endif %}

<script type = "text/javascript">
$(function() {
var $buttonBien = $('.bien');
$buttonBien.on('click',function (event) {
event.preventDefault();
});

});

function type_bien(x){
switch( x) {
case 0:
return "formulaire_villa";
break;
case 1:
return "formulaire_villa";
break;
case 2:
return "formulaie_riad";
break;
case 3:

document.getElementById(3).checked="true";
/* document.forms["formu"].action="formulaire_appartement";*/
return "formulaire_appartement";
break;
default:
alert('local_commerce est selected');
}
}

</script>

那么在数据请求重定向中该怎么做

我真的被阻止了

请帮助

可能很简单的事情就是使用Redirectfacade。

当您使用October Ajax framework时,您可以从服务器发送重定向。

因此,请参阅您的函数/代码部分。

use Redirect;
function onTest()
{
$defaultUrl = '/home';
// you get data from post
// from hidden or select etc ...
$someChoise = post('some-choise');
if($someChoise == 'my-profile') {
$defaultUrl = '/user/profile';
}
Session::put('example-key', input('my-input'));
return Redirect::to($defaultUrl);
}

more info on Redirect facadehttps://octobercms.com/docs/services/response-view#redirects

现在,当没有指定时,它将自动将网页重定向到/home

如果将some-choise指定为my-profile,则会将页面重定向到/user/profile

这样你甚至可以通过url in post data并使用它,你不需要做任何花哨的事情[这样你就可以省略data-request-redirect]

数据请求重定向是字符串,所以它的静态数据可能是你可以更新的,但我想以上方式对动态重定向url更好。[redirect specified as string=>https://octobercms.com/docs/ajax/javascript-api#javascript-api]

如果有任何疑问,请发表评论。

最新更新