javascript - 从 JavaScript Ajax 返回 laravel 视图
问题描述
从 Ajax 调用控制器方法后,我无法显示我想要的视图。
这是我用 Ajax 帖子调用控制器方法“create_pedido”的 JavaScript 函数。
$('.small-box').on('click', function(e) {
e.preventDefault();
let camarero_id = document.getElementById('id_camarero').value;
let mesa_id = e.currentTarget.parentElement.attributes.idMesa.value;
let mesa_estado = e.currentTarget.parentElement.attributes.disponible.value;
console.log('ID Mesa: ' + mesa_id);
console.log('Disponible: ' + mesa_estado);
console.log('ID Camarero: ' + camarero_id);
if (mesa_estado == 1) {
console.log('Crear')
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "POST",
url: 'create_pedido',
data: { mesa: mesa_id, camarero: camarero_id }
}).done(function(msg) {
console.log('Success');
});
} else {
console.log('Editar')
}
});
这是控制器方法,除了返回它应该去的视图之外,它做所有事情。
public function create(Request $request)
{
$mesa = Mesa::find($request->mesa);
$camarero = Trabajador::find($request->camarero);
$alimentos = Alimento::all();
$categorias = Categoria::all();
Log::channel('stderr')->info($mesa);
Log::channel('stderr')->info($camarero);
return view('pedido.create', compact('mesa', 'camarero','categorias', 'alimentos'));
}
而不是在“Log::channel...”之后转到“pedidos.create”视图,而是留在调用它的同一视图中。
这是我的路线:
Route::resource('/', 'IndexController');
Route::resource('inicio', 'IndexController');
Route::resource('trabajador', 'TrabajadorController');
Route::resource('pedido', 'PedidoController');
Route::post('create_pedido','PedidoController@create');
Route::resource('alimento', 'AlimentoController');
Route::resource('orden', 'OrdenController');
Route::resource('mesa', 'MesaController');
Route::post('mesa_changestate', 'MesaController@change_state');
解决方案
它可能会返回相同的视图,因为您没有告诉它应用程序的基本 URL。Laravel 有一个很好的方法来帮助这里,它会在路由之前加上适当的基础:
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "POST",
url: '{{url("create_pedido")}}', // use blade to add in the Laravel url() method here
data: { mesa: mesa_id, camarero: camarero_id }
}).
同样对于控制器create
方法中的返回语句-是文件夹'pedido'或'pedidos'-确保调用正确的视图:)
推荐阅读
- jquery - 如何使用 JQuery Flipbox Slider 在 Magnific Popup 中获取帖子 ID
- c++ - 如何在下面的程序中分配向量?
- php - 安装期间 Symfony 4 和 Sonata News Bundle 错误
- python-3.x - 获取连续行的数据不同的列列表
- firebase - 如何在将图像上传到 Firebase 时等待特定时间
- sql - 从 PostgreSQL 中删除重复项
- javascript - 映射数组返回未解决的承诺
- python - 使用不同宽度绘制散景 MultiLine
- azure - 无法使用 Microsoft 图形 API 获取照片
- sql - 在 Postgres 存储过程中创建插入查询的字符串数组并执行它们