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

Laravel中Ajax请求报错且success函数无法正常工作

Laravel Ajax 请求失败、Success 回调不工作的修复方案

问题代码中的核心错误点及修复:

  1. Done 回调未接收响应参数
    原代码中done(function(){...})未接收后端返回的响应数据,导致判断results.status时会抛出未定义错误。修改为:

    .done(function(results) {
      if (results.status == "200") {
        Swal.fire(
          'Added!',
          'Employee Added Successfully!',
          'success'
        )
        fetchAllEmployees();
      }
    });
    
  2. 错误回调未正确获取Ajax错误信息
    原错误回调里的alert(e)调用的是submit事件的参数,而非Ajax错误对象,无法拿到真实错误原因。修改为:

    error: function(xhr, status, error) {
      // 控制台打印详细错误信息便于排查
      console.log(xhr.responseJSON);
      alert('加载失败:' + error);
    }
    
  3. 缺少Laravel CSRF令牌验证
    Laravel POST请求必须携带CSRF令牌,否则会返回419错误。在创建FormData后追加令牌:

    const fd = new FormData(this);
    fd.append('_token', '{{ csrf_token() }}');
    
  4. 按钮状态未重置
    请求完成后(无论成功或失败),需将按钮文本恢复原样,避免一直显示"Adding..."。添加always回调:

    .always(function() {
      $("#addFile").text('Add'); // 替换为按钮原本的文本
    });
    

修复后的完整脚本:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

<script type='text/javascript'>
$(function() {
  // add new employee ajax request
  $("#insertFile").submit(function(e) {
    e.preventDefault();
    const fd = new FormData(this);
    fd.append('_token', '{{ csrf_token() }}'); // 追加CSRF令牌
    $("#addFile").text('Adding...');
    
    $.ajax({
      url: '{{ route('reg.store') }}',
      method: 'post',
      data: fd,
      cache: false,
      contentType: false,
      processData: false,
      dataType: 'json',
      error: function(xhr, status, error) {
        console.log(xhr.responseJSON); // 控制台打印详细错误
        alert('加载处理错误:' + error);
      }
    }).done(function(results) {
      if (results.status == "200") {
        Swal.fire(
          'Added!',
          'Employee Added Successfully!',
          'success'
        )
        fetchAllEmployees();
      }
    }).always(function() {
      $("#addFile").text('Add'); // 恢复按钮文本
    });
  });
});
</script>

额外排查建议:

  • 打开浏览器控制台(F12),查看Network标签下的请求详情,确认响应状态码和返回内容,Laravel的验证错误或异常会在responseJSON里显示具体信息。
  • 确保后端reg.store路由配置正确,且控制器返回合法的JSON格式(例如return response()->json(['status' => 200]))。

内容的提问来源于stack exchange,提问作者Md. Amin uddin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:37:07