layui中form表单提交使用ajax,页面依然跳转问题解决

本文介绍了在layui框架下,使用form表单配合AJAX进行数据提交时遇到的页面跳转问题。当点击提交按钮后,页面意外重载而非预期的AJAX提交。解决方案在于在AJAX调用的末尾添加`return false;`来阻止表单的默认提交行为,确保数据通过AJAX无刷新方式发送到服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

layui中form表单提交使用ajax,页面依然跳转问题解决

  • 场景:在使用form表单的时候发现页面总是会跳转并没有走到ajax中(代码如下文件引用部分不再展示)
<form class="layui-form  " id="form_show_json"  >
  <div class="layui-form-item">
    <label class="layui-form-label">选择框</label>
    <div class="layui-input-block">
      <select name="option" lay-verify="required" id="select">
        <option value="">---请选择需要展示的json文件---</option>
      </select>
    </div>
  </div>
  <div class="layui-form-item">
    <div class="layui-input-block">
      <button type="submit" class="layui-btn layui-btn-radius layui-btn-warm" id="showjson" lay-submit
      lay-filter="form_demo"
        >立即提交</button>
      <button type="reset" class="layui-btn layui-btn-primary layui-btn-radius">重置</button>
    </div>
  </div>
</form>

<script>
  layui.use(['upload', 'element', 'layer'], function () {
    var $ = layui.jquery,
      form = layui.form,

    form.on('submit(form_demo)', function (data) {
      $.ajax({
        type: 'POST',
        url: "/read_bin/show_json",
        data: $('#form_show_json').serialize(),// 获取表单提交的数据
        success: function (data) {
          console.log(data)
        }
    });
  });
</script>
  • 问题:如上代码在点击提交之后会直接返回当前页面,(并非预期结果
  • 解决:ajax使用的最后需要添加return: false
    在这里插入图片描述
### 实现 Form 表单提交后重定向 为了使 HTML 表单提交数据之后自动跳转到指定的目标页面,可以采用多种方法来实现这一功能。以下是几种常见的技术方案: #### 方法一:使用 HTTP 头部信息进行服务器端重定向 当表单提交给服务器处理时,在响应中加入 `Location` 字段指向新的 URL 地址。 ```python from django.http import HttpResponseRedirect def submit_form(request): # 假设这是处理 POST 请求并保存数据后的逻辑 ... return HttpResponseRedirect('/success/') # 跳转到成功页面[^3] ``` 这种方法适用于基于框架的应用程序开发环境,比如 Django 或 Flask 等 Python Web 框架。 #### 方法二:客户端 JavaScript 控制重定向 利用 JavaScript 来控制浏览器行为也是一种常见的方式。可以在用户点击按钮或完成某些操作后再执行跳转动作。 ```javascript // 使用原生 JS 设置 location.href 属性来进行页面切换 document.getElementById("myForm").addEventListener("submit", function(event){ event.preventDefault(); // 阻止默认提交事件 var xhr = new XMLHttpRequest(); xhr.open("POST", "process.php"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { window.location.href = "/thankyou.html"; // 提交完成后转向感谢页 } }; xhr.send(new FormData(document.forms["myForm"])); }); ``` 此代码片段展示了如何监听表单提交事件,并通过 AJAX 技术异步发送请求而不刷新整个页面;一旦收到成功的回复,则改变当前窗口的位置属性以达到重定向的效果[^2]。 #### 方法三:直接设置 action 属性为目标地址 最简单的方法是在 `<form>` 标签内定义 `action` 参数为希望访问的新网页链接。这样只要按下提交键就会立即前往该位置而无需额外编程干预。 ```html <form id="redirectForm" method="post" action="/targetPage"> <!-- 输入字段 --> </form> ``` 这种方式适合于不需要复杂业务流程的情况,因为所有的参数都将作为查询字符串附加到目标 URI 后面传递过去[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值