通过Laravel中的AJAX Post Request将值从一个视图传递到另一个视图

时间:2017-08-21 00:51:17

标签: php jquery laravel post laravel-5

我们可以使用AJAX Post请求将值从视图传输到Controller。我这样做并成功地将值从视图传递到Controller。但是我可以使用AJAX Post请求将值从一个视图传输到另一个视图吗?我正在这样做,因为Laravel建议。但在这方面不成功。难道我做错了什么?请帮忙。谢谢。 这是我的代码:

Page.blade.php:

<script>
    $(document).ready(function(){
            $('a#one').on('click', function () {
            var text=$(this).text();
            console.log(text);
            $.ajax({
                url: APP_URL+'/show',
                method: 'post',
                data: {
                    text: text
                },
                success: function(response){
                    console.log(response);
                }
            });
        });
    });
</script>

web.php:

Route::post('show','UserController@special');
Route::get('/show' , [
    'uses' => 'UserController@special1',
    'as' => 'show'
]);

控制器:

public function special(Request $request){
        $text = $request->input('text'); 
        echo " dsds ".$text;
        // do stuff with $text
        $projects=DB::table('projects')->where('projects.type', '=', $text)->get();
        return view('show',compact('projects'));
    }

您可以看到我使用紧凑型函数将值传输到另一个名为show.blade.php的视图,但它没有传输值。如何将其转移到show.blade.php?我知道使用GET方法可以很容易地传递价值。但我希望使用POST请求进行转移。

1 个答案:

答案 0 :(得分:1)

Ajax如何工作

How Ajax Works

正如您在右侧方框第二个子弹点上看到的那样。当您发出AJAX请求时,它会返回原始调用者的响应。

您的web.phpController似乎没问题。当你发出AJAX请求时,它会点击special函数,但是当你return view('show',compact('projects'));它返回你的view作为对AJAX Call的HTML响应时(你可以在你的控制台日志中看到html)。因此,这意味着您无法从ajax加载新视图。

您可以使用常规的同步调用来加载新的。 :)

或者如果您只想更新同一页面上的内容,可以参考以下链接

How can I return a view from an ajax call in Laravel 5