Laravel+Ajax请求URL错误导致AJAX无法正常工作求助
修复你的Blade模板AJAX请求问题
嘿,我帮你找出几个关键问题啦,咱们一步步来修复:
1. 核心问题:URL语法错误
你当前的AJAX URL里多写了一个多余的闭合大括号,这直接导致请求地址无效:
// 错误写法 url :"{{url('/deleteNews')}}}",
改成下面这样,去掉末尾多余的}:
// 正确写法 url :"{{url('/deleteNews')}}",
2. 必须补充Laravel CSRF令牌验证
Laravel默认会拦截没有CSRF令牌的POST请求,否则会返回419错误,所以咱们得给AJAX请求带上令牌:
先在页面的<head>里添加CSRF元标签:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后在AJAX请求里通过headers带上这个令牌。
3. 完整修正后的代码示例
Blade模板按钮部分(优化了交互体验):
<input type="button" onclick="del_click({{ $leftnew->id }});" style="background-image:url('img/delete.jpg'); background-size:cover; width:5px; height:12px; border:none; text-indent:-9999px; cursor:pointer;" title="删除">
(加了cursor:pointer让鼠标移上去显示手型,提升交互感)
AJAX函数部分:
function del_click(data) { // alert(data); $.ajax({ type: "POST", url: "{{ url('/deleteNews') }}", dataType: "json", // 带上CSRF令牌 headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { id: data // 把参数名改成id更语义化,控制器接收更清晰 }, success: function(response) { // 请求成功后的处理逻辑 if (response.status === 'success') { alert('删除成功!'); // 这里可以添加删除页面对应DOM元素的代码,比如: // event.target.closest('.news-item').remove(); } else { alert('删除失败,请重试'); } }, error: function(xhr) { // 请求失败的调试逻辑 console.error('请求出错:', xhr.responseText); alert('请求出错,请查看控制台信息'); } }); }
4. 控制器和路由的配套检查
确保你的路由是POST类型:
Route::post('/deleteNews', [NewsController::class, 'deleteNews']);
控制器方法能正确接收参数并处理删除:
public function deleteNews(Request $request) { $newsId = $request->input('id'); // 执行删除逻辑,比如:News::destroy($newsId); return response()->json(['status' => 'success']); }
这样调整后,你的AJAX请求应该就能正常工作啦!
内容的提问来源于stack exchange,提问作者Zong
相关产品推荐
相关产品推荐

