Laravel 7 - JQuery - 表单提交 returns 空白页 - 不重新路由

Laravel 7 - JQuery - form on submit returns blank page - does not reroute

我正在使用 Laravel 7 和 Jquery 并在我的表单上提交,而不是根据控制器或自定义 javascript 重定向或重新加载,它 returns 空白页。如果我使用 json 请求的回显,它会将其打印到屏幕上。我应该提到数据确实被保存到数据库中。我正在学习一个教程,因为它最符合我的需要,它的 link 可以在这里找到:https://www.youtube.com/watch?v=DRE7L8KvBw0&list=PLV1nl4kfrf6GexbVpqfQc8zjv4JLAhI4K&index=10 我应该被重定向,但我做错了什么。任何帮助,将不胜感激。我让注释代码可见,这样您就可以看到我尝试过的一些东西。 这是 exam_category.blade.php

中的表格
<div class="modal-body">
        {{-- <form method="POST" action="{{ url('admin/add_new_category') }}" class="database_operation" data-ajax="false"> --}}
            <form method="POST" action="{{ url('admin/add_new_category') }}" class="database_operation">
            {{ csrf_field() }}
        {{ method_field('POST') }}
          <div class="row">
              <div class="col-sm-12">
                  <div class="form-group">
                      <label>Enter Category Name</label>

                      <input type="text" name="name" placeholder="Enter Category Name" class="form-control" required="required">
                  </div>
                  <div class="col-sm-12">
                    <div class="form-group">
                        {{-- <button type="submit" class="btn btn-primary">Add</button> --}}
                        <button class="btn btn-primary">Add</button>

                    </div>
                  </div>

              </div>
          </div>
        </form>
        </div>

AdminController.php AdminController 顶部

namespace App\Http\Controllers;

use App\Oex_category;
use Illuminate\Http\Request;
use Validator;

Admin Controller 中的函数

public function exam_category()
    {
        return view('admin.exam_category');
    }

    public function add_new_category(Request $request)
    {
        $validator = Validator::make($request->all(), ['name' => 'required']);
        if ($validator->passes()) {
            $cat = new Oex_category();
            $cat->name = $request->name;
            $cat->status = 1;
            $cat->save();
            $arr = array('status' => 'true', 'message' => 'success', 'reload' => url('/admin/exam_category'));
        } else {
            $arr = array('status' => 'false', 'message' => $validator->errors()->all());
        }
        // echo json_encode($arr);
    }

custom.js

$(document).on("submit", ".database_operation", function() {
    let url = $(this).attr("action");
    let data = $(this).serialize();
    $post(url, data, function(fb) {
        let resp = $.parseJson(fb);
        if (resp.status == "true") {
            alert(resp.message);
            setTimeout(function() {
                window.location.href = resp.reload;
            }, 1500);
        }
    });
    return false;
});

注意:我 运行 在我的 custom.js 中进行了一些先前的测试,应用程序正在找到它。 最后,这是我的 web.php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/admin', 'AdminController@index')->name('admin');
Route::get('/admin/exam_category', 'AdminController@exam_category')->name('exam_category');
Route::post('admin/add_new_category', 'AdminController@add_new_category');

提前感谢您查看我的代码。

所有路由和控制器都应 return 将响应发送回用户的浏览器。 Laravel 提供了几种不同的方式来 return 回复。

只需将以下行添加到控制器的末尾 add_new_category 方法

return response()->json([
    'status' => 'true', 
    'message' => 'success', 
    'reload' => url('/admin/exam_category')
  ]);

要从响应中访问数据,您可以使用,

response.data.status

有关响应的更多详细信息,请访问 here