相关疑难解决方法(0)

Laravel 5.5 ajax call 419(未知状态)

我做了一个ajax调用,但我一直收到这个错误:

419(未知状态)

不知道是什么导致我在其他帖子上看到它必须用csrf令牌做一些事情,但我没有形式所以我不知道如何解决这个问题.

我的电话:

$('.company-selector li > a').click(function(e) {
     e.preventDefault();

     var companyId = $(this).data("company-id");


      $.ajax({
          headers: {
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          },
          url: '/fetch-company/' + companyId,
          dataType : 'json',
          type: 'POST',
          data: {},
          contentType: false,
          processData: false,
          success:function(response) {
               console.log(response);
          }
     });
  });
Run Code Online (Sandbox Code Playgroud)

我的路线:

Route::post('fetch-company/{companyId}', 'HomeController@fetchCompany');
Run Code Online (Sandbox Code Playgroud)

我的控制器方法

/**
 * Fetches a company
 *
 * @param $companyId
 *
 * @return array
 */
public function fetchCompany($companyId)
{
    $company = Company::where('id', $companyId)->first();

    return response()->json($company);
}
Run Code Online (Sandbox Code Playgroud)

最终目标是在html元素中显示响应中的内容.

php ajax jquery laravel

123
推荐指数
8
解决办法
16万
查看次数

Laravel Axios使用Vue失败,状态码为419

概念:我有一个允许用户发布问题的应用程序......当用户点击Ask按钮时,我试图使用Vue.js和Axios提交问题.

问题: 70%的时间问题正确提交,但30%的时间失败并返回"无法加载资源:服务器响应状态为419(未知状态)"

在此输入图像描述

我的Vue组件

<template>
    <div id = "main_question_box" class = "tab-pane fade">
        <div class="panel-body posting-field-box">        
            <textarea name="feed_body" class="summernote posting-field form-control"></textarea>
            <button class = "example-btn btn btn-xs btn-default pull-right">View Question Examples</button>                                    
        </div>

        <div class="panel-footer">
            <ul class="list-inline pull-right">
                <li>
                    <button @click = "sendPost" class="feed-post-btn btn btn-submit btn-sm btn-success pl-l pr-l">
                        <span>Ask</span>
                        <i class="fa fa-paper-plane pl-sm"></i>
                    </button>
                </li>
            </ul>

            <div class="clearfix"></div>
        </div>
    </div>
</template>

<script>

    axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content')

    export default {
        props:['timelineId'],
        data(){
            return {
                feed_body: '',
                timeline_id: this.timelineId,
                type: 'Question', …
Run Code Online (Sandbox Code Playgroud)

ajax http-status laravel-5 axios vuejs2

6
推荐指数
1
解决办法
2640
查看次数

Laravel 5.7.9 中 Yajra 数据表中的删除按钮

你好,我有 MemberController 执行以下操作:

public function anyData()
    {
        $members = DB::table('members')
            ->select(['id','email','firstname','lastname','address','zip','city','phone','mobile','work','birthdate']);


        return Datatables::of($members)
            ->addColumn('action', function ($id) {
                return '<a href="member/' . $id->id . '/edit" class="btn btn-primary">Edit</a>
                        <button class="btn" data-remote="/member/' . $id->id . '">Delete</button>
                  '; })->make(true);    
    }
Run Code Online (Sandbox Code Playgroud)

这是获取包含数据的表的 JS 代码:

<script type="text/javascript">

    var table = $('#datatable-member').DataTable({
        responsive: true,
        "language": {
            "url": "{{ asset('/plugins/datatables/lang').'/'.Config::get('app.locale').'.json'}}"
        },
        processing: true,
        serverSide: true,
        ajax: '{{ route('member') }}',
        columns: [
            {
                "className": 'details-control',
                "orderable": false,
                "data": null,
                "defaultContent": ''
            },
            { data: 'id', name: 'id' },
            { …
Run Code Online (Sandbox Code Playgroud)

laravel datatables-1.10

5
推荐指数
1
解决办法
7374
查看次数

几次尝试后,laravel 5.5继续在ajax调用中出现419发布错误

我真的很感谢这方面的帮助。我尝试了其他人在其他帖子上建议的所有解决方案,包括:Laravel 5.5 ajax调用419(未知状态)和此Ajax LARAVEL 419 POST错误解决方案。

但是,即使在头部设置了csrf_token元标记,我仍然会收到419错误:

<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)

在ajax发布调用之前,我像这样设置ajax csrf_token:

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

之后,我将ajax数据中的csrf_token作为变量发送,如下所示:

$.ajax({
        url     : "/getCompare",
        type    :"POST",
        cash    : false,
        data    :{ id : id,_token: '{{csrf_token()}}'},
        success :
           function( response ) {
              $("#compare_products").html(response);
             }
        });
Run Code Online (Sandbox Code Playgroud)

页面的应用方式使用户反复请求ajax调用以比较产品。它在很多尝试下都可以正常工作,但是在特定情况下,会引发419错误。这种情况有时是当我在页面加载后大约3分钟按下一个按钮时,出现了这个错误。有时它会在第三次或第四次尝试时给出错误。重新加载页面后,问题已解决,但仍然按照我解释的方式再次发送该错误。

我的问题是为什么会这样?是3分钟后csrf_token过期还是什么?而且我不想在verifyCsrfToken中间件中添加异常。该问题的解决方案是什么?

PS: leorent的答案是正确的。但是将我的项目上传到实际的在线服务器后。问题已经解决了。我不知道为什么,但是这个问题是因为Windows和在本地主机中本地运行laravel项目。csrf令牌会话在寡妇localhost服务器上经常过期。不用担心,将项目上传到实际服务器后,您的csrf问题将自动得到解决。

php ajax jquery laravel laravel-5.5

1
推荐指数
1
解决办法
2209
查看次数