You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中AJAX POST请求至控制器失效问题排查求助

问题排查与修复方案

让我帮你梳理下代码里的几个关键问题,正是这些问题导致你的POST请求没正常工作:

1. 事件绑定的元素ID不匹配

你的视图里a标签的ID是bksv,但jQuery里却绑定了#svd的点击事件——这就相当于你喊错了名字,自然没人响应!点击a标签时根本没触发AJAX请求,控制台打印的ID可能是你之前测试的残留,或者代码里的笔误。

2. 未阻止a标签的默认跳转行为

a标签点击后会默认导航到href指定的地址(这里是空值,会刷新当前页面),就算AJAX请求触发了,页面刷新也会打断请求流程,导致你看不到响应。

3. 缺少Laravel必需的CSRF令牌验证

Laravel默认会拦截没有CSRF令牌的POST请求,这是框架的安全机制,你的AJAX请求没带令牌,直接就被后端拒绝了。

4. 相对URL的可靠性问题

直接写url: 'save-book'可能会因为当前页面的URL层级导致请求路径错误,比如当前页面是/books/list,请求就会发到/books/list/save-book,而不是你路由里配置的/save-book。


修正后的完整代码

视图代码(微调)

<!-- 加上csrf令牌meta标签,Laravel默认模板一般会自带,没有的话手动加上 -->
<meta name="csrf-token" content="{{ csrf_token() }}">

<a id="bksv" data-value="{{$uploads[0]->id}}" href="#" >Save it!</a>

jQuery代码(修正所有问题)

$(document).ready(function() {
    // 修正选择器,和a标签ID匹配
    $("#bksv").click(function(e){
        // 阻止a标签默认跳转行为
        e.preventDefault();
        
        var data = $("#bksv").data('value');
        console.log(data);
        
        $.ajax({
            // 使用路由名称生成绝对URL,避免路径错误
            url: "{{ route('savebk') }}",
            data: {'id': data},
            type: 'POST',
            // 修正参数名:jQuery要求驼峰式的dataType,不是datatype
            dataType: 'JSON',
            // 带上CSRF令牌
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            success: function (response) {
                console.log('请求成功,响应内容:', response);
            },
            error: function (xhr) {
                console.error('请求失败,错误信息:', xhr.responseText);
            }
        });
    });
});

控制器代码(保持不变即可)

public function save_book(Request $request) { 
    dd($request->all()); 
}

测试验证

修改完后,点击Save it!标签:

  1. 控制台会打印对应的ID
  2. 打开浏览器开发者工具的「Network」标签,能看到save-book的POST请求
  3. 响应里会显示控制器dd输出的数组(包含你提交的id)

内容的提问来源于stack exchange,提问作者Robert Ross

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:03:46