0

0

Laravel Modal 表单提交防止页面刷新教程

DDD

DDD

发布时间:2025-10-28 12:38:38

|

616人浏览过

|

来源于php中文网

原创

laravel modal 表单提交防止页面刷新教程

本教程旨在解决 Laravel Modal 表单提交时页面刷新的问题。通过使用 JavaScript阻止表单的默认提交行为,并结合 AJAX 技术,实现无刷新提交,提升用户体验。同时,提供了一些代码示例和注意事项,帮助开发者更好地理解和应用。

在 Laravel 中,使用 Modal 弹窗进行表单提交时,默认行为会导致整个页面刷新,这会影响用户体验。本教程将介绍如何防止页面刷新,实现无刷新提交。

1. 阻止表单的默认提交行为

最常见的原因是表单的默认提交行为导致页面刷新。我们需要使用 JavaScript 阻止这一行为。

$(document).ready(function() {
  $('form').submit(function(event) {
    event.preventDefault(); // 阻止默认的表单提交
    // 在这里编写 AJAX 代码
  });
});

这段代码使用 jQuery 监听表单的 submit 事件,并在事件处理函数中使用 event.preventDefault() 方法来阻止表单的默认提交。

2. 使用 AJAX 进行表单提交

阻止默认行为后,我们需要使用 AJAX 来提交表单数据。

$(document).ready(function() {
  $('form').submit(function(event) {
    event.preventDefault();

    var formData = $(this).serialize(); // 获取表单数据

    $.ajax({
      url: $(this).attr('action'), // 获取表单提交的 URL
      type: $(this).attr('method'), // 获取表单提交的方法 (POST/GET)
      data: formData,
      success: function(response) {
        // 处理成功响应
        console.log(response);
        // 例如:关闭 Modal,显示成功消息
      },
      error: function(xhr, status, error) {
        // 处理错误响应
        console.error(xhr.responseText);
        // 例如:显示错误消息
      }
    });
  });
});

这段代码首先使用 $(this).serialize() 方法将表单数据序列化为字符串。然后,使用 $.ajax() 方法发送 AJAX 请求。

  • url: 从表单的 action 属性获取提交的 URL。
  • type: 从表单的 method 属性获取提交的方法 (POST/GET)。
  • data: 包含序列化的表单数据。
  • success: 成功回调函数,处理服务器返回的响应。
  • error: 错误回调函数,处理服务器返回的错误。

3. Laravel Controller 处理 AJAX 请求

在 Laravel Controller 中,你需要处理 AJAX 请求并返回合适的响应。

迅易年度企业管理系统开源完整版
迅易年度企业管理系统开源完整版

系统功能强大、操作便捷并具有高度延续开发的内容与知识管理系统,并可集合系统强大的新闻、产品、下载、人才、留言、搜索引擎优化、等功能模块,为企业部门提供一个简单、易用、开放、可扩展的企业信息门户平台或电子商务运行平台。开发人员为脆弱页面专门设计了防刷新系统,自动阻止恶意访问和攻击;安全检查应用于每一处代码中,每个提交到系统查询语句中的变量都经过过滤,可自动屏蔽恶意攻击代码,从而全面防止SQL注入攻击

下载
public function post(Request $request, $id)
{
    // 验证表单数据
    $validatedData = $request->validate([
        // 你的验证规则
    ]);

    // 处理数据
    // ...

    // 返回 JSON 响应
    return response()->json(['success' => true, 'message' => trans('flash.AddedSuccessfully')]);
}

重要的是,Controller 应该返回 JSON 格式的响应,以便 JavaScript 可以解析。

4. Blade 模板中的注意事项

确保你的 Blade 模板中包含正确的表单属性,例如 action 和 method。

<form action="{{ route('add.subtitle', ['id' => $id]) }}" method="POST">
  @csrf
  <div class="box-footer">
    <button type="submit" class="btn btn-lg col-md-3 btn-primary">..{{ __('adminstaticword.Submit') }}</button>
  </div>
</form>

5. 完整示例

以下是一个完整的示例,展示了如何在 Laravel Modal 中实现无刷新表单提交。

Blade 模板 (edit.blade.php):

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title" id="myModalLabel">添加字幕</h4>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      </div>
      <div class="modal-body">
        <form id="subtitleForm" action="{{ route('add.subtitle', ['id' => $id]) }}" method="POST">
          @csrf
          <div class="form-group">
            <label for="subtitleText">字幕内容:</label>
            <input type="text" class="form-control" id="subtitleText" name="subtitleText">
          </div>
          <div class="box-footer">
            <button type="submit" class="btn btn-lg col-md-3 btn-primary">提交</button>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
  $(document).ready(function() {
    $('#subtitleForm').submit(function(event) {
      event.preventDefault();

      var formData = $(this).serialize();

      $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: formData,
        success: function(response) {
          console.log(response);
          $('#myModal').modal('hide'); // 关闭 Modal
          // 可以添加显示成功消息的代码
        },
        error: function(xhr, status, error) {
          console.error(xhr.responseText);
          // 可以添加显示错误消息的代码
        }
      });
    });
  });
</script>

Controller (SubtitleController.php):

public function post(Request $request, $id)
{
    $validatedData = $request->validate([
        'subtitleText' => 'required|max:255',
    ]);

    // 处理数据,例如保存到数据库
    // ...

    return response()->json(['success' => true, 'message' => trans('flash.AddedSuccessfully')]);
}

Web 路由 (web.php):

Route::post('admin/class/{id}/addsubtitle','SubtitleController@post')->name('add.subtitle');

总结与注意事项:

  • 确保引入 jQuery 库。
  • event.preventDefault() 是关键,它阻止了表单的默认提交行为。
  • AJAX 请求的 URL 必须正确。
  • 服务器端必须返回 JSON 响应。
  • 在成功回调函数中,可以关闭 Modal,显示成功消息,或刷新页面上的相关数据。
  • 在错误回调函数中,可以显示错误消息。
  • 根据实际需求调整代码,例如添加表单验证,处理服务器返回的错误信息等。

通过以上步骤,你可以成功地在 Laravel Modal 中实现无刷新表单提交,提升用户体验。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

339

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

293

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

772

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

385

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

141

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

85

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

80

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

453

2026.03.04

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.3万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号