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
相关产品推荐
相关产品推荐

