【问题标题】:Status 404 error on AJAX list request in LaravelLaravel 中 AJAX 列表请求的状态 404 错误
【发布时间】:2019-09-15 23:58:06
【问题描述】:

web.php

Route::group(['middleware' =>
    ['auth']], function () {

    Route::get(
        '/ajax-users/{$id}',
        'DashboardController@indexUsersAjax'
    )->name('ajax.users.index')
        ->middleware(['permission:Access Client Details Edit']);

控制器

/**
 * Display a listing of the resource Ajax.
 *
 * @param $id
 * @return json
 */
public function indexUsersAjax($id)
{
    $users = User::all();

    $defaultUser = Clients::find($id)
        ->default_user;

    return response()->json($users, $defaultUser);
}

AJAX

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

        $.ajax({
            url: "{{ route('ajax.users.index',[1]) }}",
            type: 'GET',
            dataType: 'json',
            success: function(result){
                console.log(result);
            },
            error: function (data) {
                console.log('Error:', data);
            }});

开发者工具上的结果

GET http://localhost:8123/ajax-users/1 404 (Not Found)
Error: {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

我已经添加了我正在处理的 Laravel 代码,找不到问题所在。

【问题讨论】:

  • 控制器在执行吗?它是否执行Client::find 查询?
  • @namelivia 我在浏览器的 Laravel 工具栏上检查过,它还没有运行。

标签: php ajax laravel http-status-code-404


【解决方案1】:

Laravel 路由中的参数不包含美元符号。

'/ajax-users/{$id}' 替换为'/ajax-users/{id}',它应该可以工作。

另外response()->json()的第二个参数是HTTP状态。如果要返回两个变量,则必须将它们放入数组中,例如:

return response()->json([$users, $defaultUser]);

【讨论】:

  • 用上述解决方案排序的 404 错误,现在是 500 错误。可能是什么原因?
  • 我已经更新了我的答案。如果这不能解决问题,您得到的确切错误是什么?
【解决方案2】:

从路由定义中的$id中删除$

Route::get(
    '/ajax-users/{id}',
    'DashboardController@indexUsersAjax'
)->name('ajax.users.index')
    ->middleware(['permission:Access Client Details Edit']);

如果文件存在则删除bootstrap/cache/routes.php

执行:php artisan route:list | grep /ajax-users/{id} 并检查它是否存在

【讨论】:

  • 404 错误按上述解决方案排序,现在是 500 错误。可能是什么原因?
  • 在调用路由时检查添加到storage/logs/laravel.log 文件中的消息,如果您想将其添加到问题中,原因应该在那里。
猜你喜欢
  • 2019-03-05
  • 2016-05-18
  • 2020-09-18
  • 2019-10-12
  • 2020-05-12
  • 2015-07-31
  • 2015-06-12
  • 1970-01-01
  • 2013-02-15
相关资源
最近更新 更多