我正在使用Laravel 7和Jquery,并且在我的表单上提交,而不是按照控制器或自定义javascript进行重定向或重新加载,而是返回空白页面。如果我使用json请求的回显,则会将其打印到屏幕上。我应该提到,数据确实已保存到数据库中。我正在按照最适合我的需求的方式学习教程,其链接可以在这里找到: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;
管理控制器内部的功能
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');
提前感谢您查看我的代码。
答案 0 :(得分:1)
所有路由和控制器都应返回一个响应,以将其发送回用户的浏览器。 Laravel提供了几种返回响应的方法。
只需将以下行添加到控制器的 add_new_category 方法的末尾
return response()->json([
'status' => 'true',
'message' => 'success',
'reload' => url('/admin/exam_category')
]);
要使用响应访问数据,
response.data.status
有关响应的更多详细信息,请访问here