首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AJAX - laravel 5创建类似按钮

使用AJAX - laravel 5创建类似按钮
EN

Stack Overflow用户
提问于 2016-03-06 18:20:22
回答 2查看 1.7K关注 0票数 1

我想为posts创建一个相似的按钮,但是当我尝试它时,我得到了以下错误:

代码语言:javascript
复制
TokenMismatchException in VerifyCsrfToken.php line 46:

    in VerifyCsrfToken.php line 46
    at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
    at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
    at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
    at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
    at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
    at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
    at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
    at Pipeline->then(object(Closure)) in Kernel.php line 115
    at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
    at Kernel->handle(object(Request)) in index.php line 53
    at require_once('C:\wamp\www\forum\public\index.php') in server.php line 21

这是我的表格:

代码语言:javascript
复制
<form method="POST" id="post_up" action="">
    <input type="hidden" name="post"  value="{{ $post->id }}" />
    <input type="hidden" name="user"  value="{{ Auth::user()->id }}" />
    <button type="submit" class="btn btn-default" aria-label="Left Align">
        <span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span>
    </button>
</form>

jQuery代码:

代码语言:javascript
复制
<script type="text/javascript" src="{{ asset('js/jquery-2.2.1.js')}}"></script>
<script type="text/javascript">
    $(function(){
        $(#errors_).hide();
        $(#post_up).submit(function(e){
                e.preventDefault();
                var post = $('input[name="post"]').val();
                var user = $('input[name="user"]').val();
                var data = new FormData();
                data.append('user',user);
                data.append('post',post);
                $.ajax({
                    url:'post/post_vote_up',
                    type:'POST',
                    data:data,
                    contentType:"multipart/form-data",
                    processData:false,
                    success:function(data){alert('Section created :)')},
                    error:function(data){
                        $(#errors_).show();
                        $(#errors_).html('');
                        var errors = data.responseJSON;
                        $.each(errors,function(k,v){
                            $(#errors_).append(v+'<br>');
                        })
                    }
                });
            }
        })
    })
</script>

控制器功能:

代码语言:javascript
复制
public function post_up(Request $r)
{   
    $p_id = $r->input('post');
    $u_id = $r->input('user');
    $post = new \App\Post_vote;
    $post->post_id=$p_id;
    $post->user_id=$u_id;
    $post->vote=1;
    $post->save();
}

通过此功能的路由:

路线:post(/post/post_post_up,'PostController@post_up');

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-10 13:36:25

在表单标签之后写这个:

代码语言:javascript
复制
<input type="hidden" name="_token" value="{{ csrf_token() }}">

希望这能帮到你!

票数 1
EN

Stack Overflow用户

发布于 2016-03-06 20:49:44

这是某种中间件。我想您应该将CSRF令牌与您的请求一起发送。如果您已登录,那么它应该在您的cookie中的某个位置。尝试查找它,然后在beforeSend函数中将其作为标题添加到请求中。我想这取决于您在后端使用的框架。我就是这样为Django应用程序做的

在$.ajax({

beforeSend:function(xhr, settings){ a=document.cookie.substr(document.cookie.indexOf('csrftoken')); if (a.indexOf('=') != -1)a = a.substr(a.indexOf('=') + 1); xhr.setRequestHeader("X-CSRFToken", a);},

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35830669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档