H5+javascript+jQuery的单页面应用(SPA)(三)

前言

继承上一篇博文,本篇主力演示利用 jQuery ajax 实现 SPA 的前后端分离。本例子后端为一个简单的 spring boot 项目。

前端 Ajax

创建 login.js 和 修改 Bootstrap Form 例子

为方便起见,不用每次重新加载页面后跳转到首页,我们修改 index.js 里的 defaultPage 和 defaultNavId 为 Login 及 navLoginLink(Login 页面和菜单选项)
在这里插入图片描述
改造 Bootstrap 的表单示例,加入 form id,method 和 action。同时,提交按钮也加入 button id=“submitButton”,如下:
在这里插入图片描述
修改完成后,点击表单提交按钮后,路径变化符合预期成为后端路径。(页面报错符合预期,因为还没搭建后端服务器)
请添加图片描述

架设 Nginx 反向代理解决跨域问题

然而后端服务器不会在5500端口提供服务。更改端口成为后端端口的话,将会衍生跨域访问问题。为了避免跨域问题,我们需要设置一个 http server 提供反向代理。本文以 Nginx 为例,简单的设置一下反向代理服务。(详细的设置 Nginx 反向代理服务,请参考本栏另一博文 Vue + Nginx 项目部署 (亲测有效))设置如下:

  1. 首先在 nginx.conf 加入新的 server 配置(假设前端在5500端口、后端在15500端口)
    在这里插入图片描述

在命令行输入

nginx -t

测试一下新写的配置有没有问题,没问题的话,输入

start nginx 或
nginx -s reload

启动/重启 Nginx 服务器。现在前端和后端处于相同域名和端口了。跨域问题解决。
请添加图片描述

前端加入 ajax 代码提交表单到后端

在所有前后端分离项目,首先我们需要关闭提交按钮的默认操作,并把提交表单数据的任务交给 ajax 去处理。在 index.js 里加入以下代码:
在这里插入图片描述

现在点击登录按钮,我们发现表单没有被提交到后端了。
请添加图片描述
现在,那么我们继续加入一些表单处理代码 和 ajax 代码:

在 e.stopPropagation() 下面,我们首先把所有表单里所有的输入项加入到一个表单类(ssoLoginFormOject)里。
请添加图片描述
看到 ssoLoginFormOject 最后多出了 ,“”:“”。感觉$(‘#ssoLoginForm :input’) 把 button 也拉进来了。这个 button 我们不需要提交。,在 index.js 里 $(‘#ssoLoginForm :input’) 加个条件,遇到 id===”submitButton" 就不处理
在这里插入图片描述
再提交一次表单,发现 SSOLoginFormObject 没有了 “”:“”。OK了。
在这里插入图片描述
然后通过 jQuery ajx 把表单内容以 json 格式发送到后台并作进一步处理。如下:
在这里插入图片描述
再次提交表单,看看效果
请添加图片描述
提交表单后,ajax 返回 502 Bad Gateway 错误信息。原因很简单,因为我们还没有部署后端服务器。

后端 Spring Boot(Rest Controller)

新建一个 Spring Boot Maven 项目,
在这里插入图片描述
引入 Spring Web, Lombok 依赖
在这里插入图片描述
完成后 pom.xml 长这样

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.6</version>
		
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值