在Laravel 5.1中面向302重定向

时间:2019-05-13 12:16:31

标签: jquery ajax laravel

我是从ajax到控制器/方法的POST数据,但是当ajax命中该方法时面临302重定向,但仍然显示302错误..如果我直接从url命中ajax方法并返回任何有效的方法,但是如果我调用ajax ()使用ajax函数将其重定向到登录视图。为什么?

控制器

public function ajax(Request $request){ 
return 1;}

路线

Route::group(array('module'=>'Guest','namespace' => 
'App\Modules\Guest\Controllers'), function() {

Route::post('ajax','GuestController@ajax')->name('ajax');
}

脚本:

    $.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
        $(document).ready(function(){

        // Load more data
        $('.load-more').click(function(){
            var row = Number($('#row').val());
            var allcount = Number($('#all').val());
            var rowperpage = 3;
            row = row + rowperpage;

            if(row <= allcount){
                $("#row").val(row);

                $.ajax({
                url: "{{url('GuestController/ajax')}}",
                type: 'post',
                datatype: 'JSON',
                headers: {
                    'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
                },
                data: {row:row},
                success: function(data){
                    alert(data);
                }
 });

            }else{

                console.log('if is not working');
            }

        });

        });

应该点击ajax()方法。

2 个答案:

答案 0 :(得分:0)

您要在此处设置路线的名称:->name('ajax');,并且可以使用 route()函数并传递名称来调用该路线。

更改您的Ajax网址以使用路由名称

示例:url: "{{ route('ajax') }}",

还将错误功能(如成功功能)添加到您的ajax脚本中:

error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Some Error'); }

您的ajax函数应返回JSON,因此您的函数应如下所示:

public function ajax(Request $request){ return response()->json(1); }

答案 1 :(得分:0)

添加“ X-Requested-With”,“ XMLHttpRequest”。这尤其出于安全性考虑,因为它可以防止CSRF攻击,因为未经服务器通过CORS的同意,此标头无法添加到AJAX请求跨域中。

$.ajax({
 type: "POST",
 beforeSend: function(request) {
  request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
 }
});