如何使用js存储数据并使用相同的单击重定向到不同的视图(Laravel 4.1)

时间:2014-06-04 05:37:31

标签: php jquery laravel laravel-4 laravel-routing

我的项目中有一个视图,它有几个步骤。通过按钮单击处理这些步骤,使用户进入下一步,同时使用JS和AJAX存储数据。在最后一次单击时,我希望用户从复选框选择列表中进行选择,并且我想存储并使用此数据来影响下一个视图(最后一个按钮单击应该重定向到另一个视图)。

我可以使用ajax存储数据,但我似乎无法弄清楚如何将数据发送到下一个视图。

基本上,我想收集点击的数据,用ajax将其发送回我的控制器,存储它,然后在超链接(使用路由)中使用它来实现下一个视图(使用SESSION数据):

<a href="/fans/welcome_reroute/{some id}"><input id="btn-next" type="button" name="next" class="next action-button faded" value="Next" /></a>

我希望这很清楚。关于如何做到这一点的任何想法?

编辑:

好的,基本上,它的工作原理如下:

第1步:

系列复选框(最多选择3个):

[] [] [] [] []

“下一个按钮”将您带到第2步(使用js,视图相同)

第2步:

系列复选框(从之前传递)(选择1):

[id1] [id2]

“下一个按钮”将您带到另一个视图

在新视图中:

可能会说“你选择了id2!真棒!”

当用户单击其中一个框,然后单击下一个按钮时,我希望选中该框中的ID信息,返回我的控制器,存储在我的数据库中(我已经这样做了),但是另外,我想将此信息传递到下一个视图,以便它使用会话数据影响视图(使用Laravel中的Session :: get)。

我的主要问题是,如何将这些数据传回视图,同时使用ajax和我的控制器存储它。我认为这需要使用获取id信息的路由来完成,但是如何将该id信息传递给按钮超链接,如上所示?

编辑2:

function loadStep3() {
        var data = $('#onBoarding-hidden #step2').val();
        if(data) {
            var result = jQuery.parseJSON(data);
            if(result[0]) {
                result = jQuery.parseJSON(result[0]);
                if(result.name) {
                    $('#step3 .name').html(result.name);
                }
            }
        }       

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你想要存储下一个请求。为此,您可以使用Session::flash('key','val')将一些数据放入会话中。

此数据仅在一个请求中保留在会话中。参考 -

http://laravel.com/docs/session#flash-data

答案 1 :(得分:0)

基本上您只需要将数据放到session,然后您可以访问下一个请求,在这种情况下,您可以flash将数据session发送给Session::flash('identifier', 'value'); 它返回下一个请求。所以你可以试试这个:

Session::get('identifier');

然后在重定向后的下一个请求中;您可以使用此访问该数据;

Session::flash('myId', Input::get('fieldname'));

所以它可能是这样的:

view

然后在@if(Sessuin::has('myId')) <a href="/fans/welcome_reroute/{{ Session::get('myId') }}"><input id="btn-next" type="button" name="next" class="next action-button faded" value="Next" /></a> @endif 的下一个请求中,使用以下命令从会话中获取

Session

有关if(result.name) { window.location.href = 'url?name='+result.name; } 的更多信息,请在Laravel website上查看。

更新:根据您的评论,我认为您可以这样做:

$name = Input::get('name');

然后在下一个请求(重定向的位置)上,从查询字符串中访问该名称:

$name

现在您可以根据需要使用{{1}}。