Larvael中的Ajax POST请求

时间:2017-08-20 07:00:33

标签: jquery ajax post model-view-controller laravel-5

我使用text Ajax请求从<script>文件中的.blade.php标记向控制器发送名为POST的值。如果我不写$.post函数,那么它会在控制台中输出文本值。但是当我写这个Ajax请求发送数据到控制器值时不通过。简而言之,我想将值从View传递给Controller,我无法做到这一点。我已经尝试了所有YouTube教程和之前的Stack Overflow问题。我也参观了拉拉采斯,但问题没有解决。难道我做错了什么?请帮忙。谢谢。

shopReq.blade.php:

{{csrf_field()}}
<script>
    $(document).ready(function(){
        $('.ourItem').click(function(event){
                var text=$(this).text();
                $('#addItem').val(text);
                 console.log(text);
                $.post('shopReq',{'text':text,'_token':$('input[name=_token]').val()}),function(data){
                    console.log(data);
                });
        });
    });
</script>

Web.php:

Route::post('shopReq','UserController@special');

控制器:

class UserController extends Controller
{   
    public function special(Request $request){
        $articles = DB::table('shoppingtrips')->get();
        echo"DONE";
  //      return $request->all();
    }
}

2 个答案:

答案 0 :(得分:1)

尝试以下ajax语法:

$.ajax({
    url: 'your route',
    method: 'post',
    data: {
        key1: value1
        // you can send more such key value pair here
    },

    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    success: function(response){

    }
});

请勿忘记添加CSRF-TOKEN,否则您将收到邮件请求所需的500(内部服务器错误)。

答案 1 :(得分:1)

在您的layout.blade.php文件中

将此添加到您的头标记:

<script type="text/javascript">
    // laravel ajax helpers
    var APP_URL ={!! json_encode(url('/')) !!}; 
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': '{{csrf_token()}}'
        }
    });
</script>

然后,在您看来,这样做:

<script>
    $(document).ready(function(){
        $('.ourItem').click(function(event){
            var text=$(this).text();
            $('#addItem').val(text);
            console.log(text);


            $.ajax({
                url: APP_URL+'/shopReq',
                method: 'post',
                data: {
                    text: text
                },
                success: function(response){
                    console.log(response);
                }
            });
        });
    });
</script>

在您的控制器中,执行以下操作:

class UserController extends Controller
{   
    public function special(Request $request){
        $text = $request->input('text'); 
        // do stuff with $text 
    }
}