【问题标题】:Laravel 5.4 AJAX form post routing 404 errorLaravel 5.4 AJAX 表单发布路由 404 错误
【发布时间】:2017-12-05 22:45:54
【问题描述】:

我正在处理使用 AJAX 提交的表单。表单以前只使用没有 AJAX 的常规方法工作。所有路线都很好,并且表格工作正常。现在我发现需要在 AJAX 函数中提交我的表单。我已经像往常一样为 AJAX 提交编写了脚本。

这是我的表单脚本:

       <div class="onpage-sold-input">
            {!! Form::open(['url' => route('sold.sold'),'class'=>'contact-form', 'id'=>'search-sold-button','method'=>'POST']) !!}
                {!! Form::text('sold', old('sold'), array('class'=>'form-control', 'placeholder'=>'Qty.')) !!}
                <input type="hidden" name="part_id" value="{{ $inventory->id }}">
                <input type="hidden" name="_token" value="{{ csrf_token() }}">
                {!! Form::button('Sold', ['class' => 'btn btn-sm btn-success', 'id'=>'sold-button','type'=>'submit']) !!}
            {!! Form::close() !!}
        </div>

Hare 是 AJAX 脚本:

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

$('#sold-button').on('click', function (e) {
e.preventDefault();

var form = $('#search-sold-button'),
    data = form.serialize(),
    ajax_url = 'sold/sold',
    alert_section = $('.alert-section');

$.post(ajax_url, data, function (resp) {
    alert_section.fadeIn().find('.alert').html(resp);
    setTimeout(function () {
        alert_section.fadeOut();
    }, 3000)
})
});

这里是路线:

Route::post('/sold/sold',['uses'=>'PriceController@sold', 'as'=>'sold.sold']); 

这是我在控制台中遇到的错误:

POST http://localhost/backend_master/public/inventory/sold/sold 404 (Not Found)

我不确定我在这里做错了什么。

【问题讨论】:

    标签: jquery ajax laravel laravel-5.4 laravel-routing


    【解决方案1】:

    您需要更改此行:
    ajax_url = 'sold/sold',

    通过这个:
    ajax_url = form.attr('action'),

    ;)

    【讨论】:

      【解决方案2】:

      您可以使用php artisan route:list 命令列出可用路由。如果您使用资源作为对象,那么您保存已售对象的路径名称将是sold.store

      如果你对路由名称不熟悉,那么不要在表单动作属性中使用 route() 函数,使用 url("sold") 和 method="post",

      但在您的 ajax 代码中进行以下更改

              jQuery.ajaxSetup({
              headers: {
                  'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content')
              }
          });
      
          $('#sold-button').on('click', function (e) {
              e.preventDefault();
      
              var form = $('#search-sold-button'),
              data = form.serialize(),
              ajax_url = {! url('sold/sold' !},
              alert_section = $('.alert-section');
      
              $.post(ajax_url, data, function (resp) {
              alert_section.fadeIn().find('.alert').html(resp);
              setTimeout(function () {
                  alert_section.fadeOut();
              }, 3000)
              })
          });
      

      变化

      如果您的路线是sold/sold,则使用{! route('sold/sold')!}{! url('sold/sold') !}

      【讨论】:

        猜你喜欢
        • 2018-08-20
        • 2018-01-15
        • 2013-12-26
        • 2014-12-21
        • 2017-10-20
        • 2018-11-26
        • 1970-01-01
        • 2018-07-06
        • 2018-01-18
        相关资源
        最近更新 更多