讲师中心 微信公众号
AI工具推荐 视频效率加速

Laravel AJAX 重定向:如何在成功响应后跳转到带 ID 的路由

轻丽同学_1390

轻丽同学_1390

发布时间:2026-07-19 22:13:03

|

558人浏览过

|

来源于php中文网

原创

Laravel AJAX 重定向:如何在成功响应后跳转到带 ID 的路由

本文详解 laravel 中通过 ajax 创建资源后,前端 javascript 如何正确跳转至含动态 id 的命名路由,避免 url 拼接错误,并提供服务端生成 url 和客户端拼接两种安全、可维护的解决方案。

本文详解 laravel 中通过 ajax 创建资源后,前端 javascript 如何正确跳转至含动态 id 的命名路由,避免 url 拼接错误,并提供服务端生成 url 和客户端拼接两种安全、可维护的解决方案。

在 Laravel 开发中,常需通过 AJAX 提交表单(如创建客户),并在成功后跳转至该资源的详情页(例如 client/15)。但许多开发者会误用 Blade 模板语法 {{ route('client', ['id' => ...']) }} 在 JS 中动态插入响应数据,导致生成类似 client/%27+response.id+%27 的非法 URL —— 这是因为 {{ }} 是服务端 PHP 渲染语法,在页面输出时已静态解析完毕,无法在运行时访问 JavaScript 变量。

✅ 正确方案一:服务端返回完整跳转 URL(推荐)

这是最健壮、前后端职责清晰的做法。Laravel 后端在创建成功后,直接生成并返回标准化的 URL:

// 在控制器中(例如 ClientController@store)
public function store(Request $request)
{
    $shop = Shop::create($request->validate([
        'shop_name' => 'required|string|max:255'
    ]));

    return response()->json([
        'success' => 'Shop byl úspěšně vytvořen.',
        'url' => route('client', ['id' => $shop->id]) // ✅ 使用 route() 生成绝对或相对 URL
    ]);
}

前端 AJAX 成功回调中直接使用该 URL:

$.ajax({
    method: "POST",
    url: '{{ route("add-new-client") }}',
    data: { shop_name: shop_name },
    success: function(response) {
        console.log(response);
        $("#addClientModal").modal("hide");
        window.location.href = response.url; // ✅ 直接跳转,无拼接风险
    },
    error: function(xhr) {
        console.error(xhr.responseJSON?.message || '创建失败');
    }
});

✅ 优势:URL 格式由 Laravel 路由系统统一保障(支持命名路由、参数约束、多语言前缀等);前端无需了解路由结构,解耦度高;避免 XSS 风险(服务端已做 URL 安全处理)。

Laravel Creem Agent
Laravel Creem Agent

Creem 支付商店助理 — 查询订阅、客户、交易、产品,执行心跳检查,管理本地 Laravel支付商店。

下载

✅ 正确方案二:客户端拼接路径(轻量适用)

若路由结构稳定且无需复杂逻辑,可采用硬编码路径拼接(仅限简单场景):

success: function(response) {
    $("#addClientModal").modal("hide");
    window.location.href = '/client/' + encodeURIComponent(response.id); // ✅ 必须 encode!
}

⚠️ 注意事项:

  • 永远不要直接拼接未编码的 response.id —— 若 ID 包含特殊字符(极少见但需防御),可能破坏 URL;
  • 路径 /client/{id} 必须与 routes/web.php 中定义的路由完全一致(如 Route::get('/client/{id}', [ClientController::class, 'show'])->name('client'));
  • 不适用于带中间件、作用域或动态前缀(如多租户、locale)的复杂路由。

❌ 错误写法解析(为何失效)

// ❌ 错误:Blade 在服务端渲染时将 '+response.id+' 视为字符串字面量
window.location.href = '{{ route("client", ["id" => "' + response.id + '"]) }}';
// 输出结果实际为:client/%27+response.id+%27 → 解码后是 client/'+response.id+'

根本原因:{{ ... }} 在 HTML 输出前已被 PHP 执行完毕,JS 变量 response.id 对其完全不可见。

总结建议

  • 首选服务端生成 URL:route() 或 url() 方法确保语义正确、兼容路由变更,是 Laravel 最佳实践;
  • 避免混合渲染逻辑:切勿在 Blade 模板中尝试“注入” JS 变量到 {{ }} 内;
  • 始终验证响应结构:在 JS 中检查 response.url 是否存在,增强健壮性;
  • 配合 HTTP 状态码:后端应返回 201 Created 并附带 Location header,进一步符合 REST 规范(可选进阶)。

通过以上方式,即可安全、可靠地实现 Laravel AJAX 创建后的精准路由跳转。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2660

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2493

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1141

2024.09.24

location.assign
location.assign

在前端开发中,我们经常需要使用JavaScript来控制页面的跳转和数据的传递。location.assign就是JavaScript中常用的一个跳转方法。通过location.assign,我们可以在当前窗口或者iframe中加载一个新的URL地址,并且可以保存旧页面的历史记录。php中文网为大家带来了location.assign的相关知识、以及相关文章等内容,供大家免费下载使用。

2502

2023.06.27

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

40

2026.10.08

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

140

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

120

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

100

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 201人学习

Composer手册
Composer手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn