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

Laravel Ajax提交数据后页面自动刷新问题求助

解决Laravel Ajax提交表单不刷新页面的问题

你的核心问题是Ajax请求成功后执行了页面跳转,同时控制器未返回正确响应,导致页面意外刷新。以下是具体修复步骤:


1. 修改前端Ajax代码,移除页面跳转逻辑

当前Ajax的success回调里的location.href = store;是强制页面刷新的直接原因,同时简化事件阻止逻辑:

$(document).on("click", "#primaryButton", function(e) {
    e.preventDefault(); // 阻止默认行为
    
    $.ajax({
        type: "post",
        url: "{{ route('event-qr-post') }}",
        data: $("#message").serialize(),
        success: function(response) {
            console.log("更新成功!");
            console.log("返回数据:", response);
            // 可添加成功提示,比如弹窗或更新页面内容
            alert("记录已成功更新");
            // 可选:清空表单
            $("#message")[0].reset();
        },
        error: function(xhr) {
            console.log("请求失败:", xhr.responseText);
            alert("更新失败,请重试");
        }
    });
});

2. 调整控制器,返回JSON响应

当前控制器执行更新后无任何响应,Ajax会因未收到正确反馈出现异常,需返回JSON格式的成功信息:

use Illuminate\Http\Response;

public function post_eventQR_attendance(Request $request)
{
    $User = MasterTempAward::where('id', $request->get('id'))->first();
    
    if (!$User) {
        return response()->json(['status' => 'error', 'message' => '记录不存在'], Response::HTTP_NOT_FOUND);
    }
    
    $User->modified_by = $request->get('staffName');
    $User->attended = "Yes";
    $User->time = Carbon::now();
    $User->business_card = "";
    $User->save();
    
    // 返回成功的JSON响应
    return response()->json(['status' => 'success', 'message' => '记录更新成功']);
}

3. 额外检查点

  • 确认表单按钮#primaryButton的type为button(当前代码已设置,避免默认submit类型触发表单提交)
  • 验证{{ route('event-qr-post') }}生成的URL是否正确,可在控制台打印查看
  • 若后续添加文件上传字段,需改用FormData处理表单数据:
    let formData = new FormData($("#message")[0]);
    $.ajax({
        // 其他配置不变
        data: formData,
        contentType: false,
        processData: false,
        // ...
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:05:33