【汇总】解决Ajax请求后端接口,返回ModelAndView页面不跳转

【汇总】解决Ajax请求后端接口,返回ModelAndView不跳转

  • 问题发现
  • 问题解决
    • 方法一:直接跳转到指定URL(推荐)
    • 方法二:将返回的html内容,插入到页面某个元素中
    • 方法三:操作文档流
    • 方法四:使用form表单提交(推荐)
    • 方法五:把项目改为前后分离项目,交给前端跳转

问题发现

再开发工作中,可能会有些需求,用到前后端不分离的项目,某项功能可能会,前端发送post请求和参数到后端接口,由后端来确认跳转到指定页面,如果使用Ajax请求就会导致,前端页面不跳转的问题,如图所示,后端将整个页面返回了:

在这里插入图片描述

问题解决

由于 Ajax 的特性,它更适合用于处理局部刷新、异步数据请求和动态内容更新等场景。而页面跳转和整个页面的渲染需要在浏览器中进行处理,这通常不是 Ajax 所擅长的领域。

方法一:直接跳转到指定URL(推荐)

此方法适用于GET请求方式,请求接口,示例代码如下:

window.location.href = "yourUrl/"+id;

网上有很多方法是ajax请求后,跳转指定页面,这种方式跳转的页面,无法直接从后端拿数据,导致前后端是分离的,与现有关系互斥(不推荐)。

方法二:将返回的html内容,插入到页面某个元素中

此方法,视具体业务需求操作,可以再当前页面中插入新的内容,可以不进行页面跳转,但是需要页面跳转的情况就不能使用次方法。

<body>
    <div id="your-element-id"></div>
</body>
$.ajax((
	url:"/your-backend-api-url'
	method: 'GET,
	dataType: "html,
	success: function(data) {
		//将返回的HTML
		$('#your-element-id').html(data);
	},
	error: function() {
		//错误情况
	}
});

方法三:操作文档流

document.write() 方法可向文档写入文本内容,可以是 HTML 代码。

$.ajax((
	url:"/your-backend-api-url'
	method: 'GET,
	dataType: "html,
	success: function(data) {
		document.write(data)
	},
	error: function() {
		//错误情况
	}
});
  1. 如果在文档加载期间(即在 <script> 标签内或页面加载事件中)第一次调用 document.write(),它会将内容追加到文档的末尾。
  2. 如果在文档加载完成后(例如在点击按钮或其他事件触发时)调用 document.write(),它会直接替换整个文档内容。

不建议使用,这可能会导致意外的结果,特别是在复杂的页面结构中。

方法四:使用form表单提交(推荐)

如果你的请求方式是POST,还需要带一些参数,form表单提交可以解决你的困扰。

<form action="url" method="POST">
  <!-- 表单输入字段 -->
  <input type="text" name="fieldName" />
  <!-- 提交按钮 -->
  <button type="submit">提交</button>
</form>

你也可以使用js,创建form表单元素,进行提交,示例代码如下:

	function makeForm(data) {
            // 创建一个 form
            const tempForm = document.createElement("form");
            tempForm.id = "tempForm";
            tempForm.name = "tempForm";
            // 添加到 body 中
            document.body.appendChild(tempForm);
            // 创建一个输入框
            const nameinput1 = document.createElement("input");
            nameinput1.type = "text";
            nameinput1.name = 'field';
            nameinput1.value = field;
            tempForm.appendChild(nameinput1);
            // 创建一个输入框
            const nameinput2 = document.createElement("input");
            nameinput2.type = "text";
            nameinput2.name = 'field2';
            nameinput2.value = field2;
            tempForm.appendChild(nameinput2);
            // form 的提交方式
            tempForm.method = "POST";
            // form 提交路径
            tempForm.action = "yourUrl";
            // 对该 form 执行提交
            tempForm.submit();
            // 删除该 form
            document.body.removeChild(tempForm);
        }

这样请求就可以进行页面跳转了。

方法五:把项目改为前后分离项目,交给前端跳转

上面四种方法都没有帮助你解决此问题,那就把这个问题抛给前端把!!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/59049.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows terminal 添加 git bash 解决git中文乱码显示问题

Windows terminal 添加 git bash 解决git中文乱码显示问题 在 windows terminal 中配置git 说明&#xff1a; 点击箭头选择设置 说明&#xff1a; 点击"添加新配置文件"配置名称命令行&#xff0c;可执行文件的具体语句 C:\Program Files\Git\bin\bash.exe启动目录…

什么是注意力机制?注意力机制的计算规则

我们观察事物时&#xff0c;之所以能够快速判断一种事物(当然允许判断是错误的)&#xff0c;是因为我们大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断&#xff0c;而并非是从头到尾的观察一遍事物后&#xff0c;才能有判断结果&#xff0c;正是基于这样的理论&a…

【C语言】初阶结构体

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;C语言初阶 ✨其他专栏&#xff1a;代码小游戏 &#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论…

P14 电路定理——巧妙-灵性-智慧

1、替代定理 图示表示&#xff1a; 叠加定理和齐性定理只能用于线性电路&#xff0c;但是替代定理无论线不线性都可以用。 常见的&#xff1a;线性电路将某复杂支路等效成电压源或电流源之后&#xff0c;就可以使用叠加原理了。 引入两个相互抵消的电压源&#xff0c;拿其中一…

基于STM32设计的智能空调

一、项目背景 随着人们生活水平的不断提高&#xff0c;对居住环境的舒适度要求也越来越高。空调作为一种重要的家电设备&#xff0c;已经成为了现代家庭中必不可少的一部分。本文介绍了一种基于STM32的智能空调设计方案&#xff0c;可以自动地根据环境温度进行温度调节。 二、…

Opencv-C++笔记 (15) : 像素重映射 与 图像扭曲

文章目录 一、重映射简介二、图像扭曲 一、重映射简介 重映射&#xff0c;就是把一幅图像中某位置的像素放置到另一图像指定位置的过程。即&#xff1a; 在重映射过程中&#xff0c;图像的大小也可以同时发生改变。此时像素与像素之间的关系就不是一一对应关系&#xff0c;因…

PHP从入门到精通—PHP开发入门-PHP概述、PHP开发环境搭建、PHP开发环境搭建、第一个PHP程序、PHP开发流程

每开始学习一门语言&#xff0c;都要了解这门语言和进行开发环境的搭建。同样&#xff0c;学生开始PHP学习之前&#xff0c;首先要了解这门语言的历史、语言优势等内容以及了解开发环境的搭建。 PHP概述 认识PHP PHP最初是由Rasmus Lerdorf于1994年为了维护个人网页而编写的一…

租赁类小程序定制开发|租赁管理系统源码|免押租赁系统开发

随着互联网的发展&#xff0c;小程序成为了一种重要的移动应用开发方式。租赁小程序作为其中的一种类型&#xff0c;可以为很多行业提供便利和创新。下面我们将介绍一些适合开发租赁小程序的行业。   房屋租赁行业&#xff1a;租房小程序可以帮助房东和租户快速找到合适的租赁…

对当下AI的一些观感思考

目前来看&#xff0c;AI技术地震的震中还是在美帝那旮瘩。尤其是M7&#xff0c;这几家市值加总快15万亿美元了&#xff0c;个个都是行业翘楚&#xff0c;个个都有拿得出手的东西。AI是个技术密集、人才密集、计算密集的产业。美帝拥有全球一流的顶尖人才&#xff0c;以及财力、…

IntelliJ IDEA 2023.2社区版插件汇总

参考插件帝&#xff1a;https://gitee.com/zhengqingya/java-developer-document 突发小技巧&#xff1a;使用插件时要注意插件的版本兼容性&#xff0c;并根据自己的实际需求选择合适的插件。同时&#xff0c;不要过度依赖插件&#xff0c;保持简洁和高效的开发环境才是最重要…

2023下半年软考初级程序员报名入口-报名流程-备考方法

软考初级程序员2023下半年考试时间&#xff1a; 2023年下半年软考初级程序员的考试时间为11月4日、5日。考试时间在全国各地一致&#xff0c;建议考生提前备考。共分两科&#xff0c;第一科基础知识考试具体时间为9:00到11:30&#xff1b;第二科应用技术考试具体时间为2:00到4…

STM32 低功耗-睡眠模式

STM32 睡眠模式 文章目录 STM32 睡眠模式第1章 低功耗模式简介第2章 睡眠模式简介2.1 进入睡眠模式2.1 退出睡眠模式 第3章 睡眠模式代码示例总结 第1章 低功耗模式简介 在 STM32 的正常工作中&#xff0c;具有四种工作模式&#xff1a;运行、睡眠、停止和待机模式。 在系统或…

小白到运维工程师自学之路 第六十四集 (dockerfile构建tomcat、mysql、lnmp、redis镜像)

一、tomcat&#xff08;更换jdk&#xff09; mkdir tomcat cd tomcat/ tar xf jdk-8u191-linux-x64.tar.gz tar xf apache-tomcat-8.5.40.tar.gzvim Dockerfile FROM centos:7 MAINTAINER Crushlinux <syh163.com> ADD jdk1.8.0_191 /usr/local/java ENV JAVA_HOME /us…

AcWing257. 关押罪犯(二分图+染色法)

输入样例&#xff1a; 4 6 1 4 2534 2 3 3512 1 2 28351 1 3 6618 2 4 1805 3 4 12884输出样例&#xff1a; 3512 解析&#xff1a; 二分&#xff0c;每次查看是否是二分图 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N2e45,M2e55…

《Spring Boot源码解读与原理分析》书籍推荐

Spring Boot 1.0.0 早在2014年就已经发布&#xff0c;只不过到了提倡“降本增效”的今天&#xff0c;Spring Boot才引起了越来越多企业的关注。Spring Boot是目前Java EE开发中颇受欢迎的框架之一。依托于底层Spring Framework的基础支撑&#xff0c;以及完善强大的特性设计&am…

使用 Go 语言实现二叉搜索树

原文链接&#xff1a; 使用 Go 语言实现二叉搜索树 二叉树是一种常见并且非常重要的数据结构&#xff0c;在很多项目中都能看到二叉树的身影。 它有很多变种&#xff0c;比如红黑树&#xff0c;常被用作 std::map 和 std::set 的底层实现&#xff1b;B 树和 B 树&#xff0c;…

前端实现打印1 - 使用 iframe 实现 并 分页打印

目录 打印代码对话框预览打印预览 打印代码 <!-- 打印 --> <template><el-dialogtitle"打印":visible.sync"dialogVisible"width"50%"top"7vh"append-to-bodyclose"handleClose"><div ref"print…

uni-app uView自定义底部导航栏

因项目需要自定义底部导航栏&#xff0c;我把它写在了组件里&#xff0c;基于uView2框架写的&#xff08;vue2&#xff09;&#xff1b; 一、代码 在components下创建tabbar.vue文件&#xff0c;代码如下&#xff1a; <template><view><u-tabbar :value"c…

推荐一款非常简单实用的数据库连接工具Navicat Premium

Navicat Premium是一款非常实用的数据库连接工具&#xff0c;别再用HeidiSQL和idea自带的数据库连接了&#xff0c;看完这篇文章&#xff0c;赶紧把Navicat Premium用起来吧。 首先&#xff0c;需要获取Navicat Premium的安装包&#xff0c;可以通过以下网盘链接下载&#xff0…

刷题笔记 day5

力扣 202 快乐数 首先来分析什么样的数是快乐数&#xff0c; 解题思路&#xff1a; 1&#xff09;定义快慢指针 &#xff1b; 2&#xff09;快指针走两步&#xff0c;慢指针走一步 &#xff1b;3&#xff09;两个指针相遇时判断相遇的数值是否为1。 怎样处理 取各分位数的平…