繁体   English   中英

如何在laravel 5.3中使用ajax

[英]How to use ajax in laravel 5.3

我是Laravel的新手,正在使用Laravel 5.3。 我想创建一个文本字段,它会自动建议一些数据,当我选择一个数据时,它会将它添加到一个数组。 我想将该数组发送到控制器以供进一步使用。 对此

查看文件如下:

<head>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <script>
        $(document).ready(function() {
            var members = {!!  json_encode($member)  !!};
            console.log(members);
            var arr = [];
            $("#tags").autocomplete({
                source: members,
                select: function (event, ui) {
                    arr.push(ui);
                    console.log(arr);
                }
            });
            $("#submit").click(function(event){
                $.ajax({
                    type: "POST",
                    url: '/storeresearch',
                    data: {selectedMembers: arr},
                    success: function( msg ) {
                        console.log(msg);
                    }
                });
            });
        });
        </script>
</head>
<body>
<form id="hu" action="/storeresearch" method="POST">
    {!! csrf_field() !!}
    <label>Research Author</label>
    <input type="text" id="tags" name="researchsupervisor_1" value="">
    <input type="submit" name="submit" id="submit" class="btn btn-primary" value="Add">
</form>
</body>

我的Controller文件如下:

public function store(Request $request){
        if($request->ajax())
        {
            $mem = $request->all();
            return response()->json($mem,200) ;
        }
        else{
            return "not found";
        } 

web.php如下:

Route::post('/storeresearch','ResearchController@store');

但似乎没有发生ajax调用。 在控制器中,它总是进入else部分。 有什么问题可以帮到什么问题?

尝试这样的事情:

$.ajax({
    url     : '/login',
    method  : 'post',
    data    : {
        login_username  : userName,
        password        : password
    },
    headers:
    {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    success : function(response){

    }
});

路线:

Route::post('/login',[
    'uses' => 'AdminServiceController@login'
]);

控制器方法:

 public function login()
{
    $userName   = INPUT::get('login_username');
    $password   = INPUT::get('password');

    // your logic
}

你的代码大多看起来不错。 但是当您使用POST请求时,您缺少使用AJAX调用发送csrf令牌。

您可以通过以下方式发送带有AJAX调用的csrf令牌:

<meta name="csrf-token" content="{{ csrf_token() }}">

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

更多信息: https//laravel.com/docs/5.3/csrf#csrf-x-csrf-token

当你点击按钮时,它是否真的触发了一个AJAX调用? 请在浏览器的网络选项卡上查看。

我通过以下方式解决了这个问题

$.ajax({
                type:'POST',
                url:'your url',
                data:{_token: "{{ csrf_token() }}"
                },
                success: function( msg ) {
                }
            });

什么是Request的命名空间声明?

如果是use Illuminate\\Http\\Request; 尝试use Request;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM