一种异步的JS和XML
什么是异步与同步?
可以理解把异步理解为多线程,同步理解为单线程
也就是说原来是要通过点击提交按钮,跳转到第二个页面去响应。而使用了Ajax不点击按钮,会自动的提交信息到服务器,并且返回信息到该页面,在此过程中,原页面不受影响,可以进行原本的任务
axios.get(url[,config])
axios.delete(url[,config])
axios.post(url[,data[,congig]])
axios.put(url[,data[,config]])
HTTP请求与表单提交
表单提交方式和 HTTP 请求方式是相关但不完全相同的概念:
虽然 GET 和 POST 是表单提交的主要方式,但其他 HTTP 方法(PUT、DELETE 等)也可以通过表单提交,尤其是在使用 AJAX 或 JavaScript 框架(如 Axios)时,可以更灵活地使用这些方法。在这种情况下,你可以使用 JavaScript 来构建请求,而不是依赖于 HTML 表单元素。
总的来说,表单提交是一种使用 HTTP 请求方式的特定方式,而 HTTP 请求方式则是一种更广泛的通信协议规定的方式,用于在客户端和服务器之间传输数据。
data:要传输的数据
为什么post方法有data,而get方法没有呢?
get方法在url传递参数,自然不需要特地在data中写
config:
config
参数是一个可选的配置对象,用于在 Axios 请求中提供一些额外的设置。它是一个包含各种选项的 JavaScript 对象。以下是一些常见的配置选项:
在方法后面(括号后面)可以通过.
+方法
来获取返回值并执行对应操作
具体有这几个方法:
then
:获取成功的返回值catch
:获取错误的返回值,一般是指controller层报错,抛出异常中带有的信息finally
:无论成功错误都执行axios.post('/api/data', data, {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
// 其他自定义头部
},
params: {
param1: 'value1',
param2: 'value2'
},
timeout: 5000,
auth: {
username: 'john_doe',
password: 'secret_password'
},
responseType: 'json',
onUploadProgress: progressEvent => {
console.log('Upload Progress:', (progressEvent.loaded / progressEvent.total) * 100);
}
})
.then(response => {
// 处理请求成功的情况
console.log('Response Data:', response.data);
return 'Success Data'; // 返回一个值,将会传递给下一个 .then()
})
.catch(error => {
// 处理请求失败的情况
console.error('Error:', error);
throw 'Error Data'; // 抛出一个值,将会传递给下一个 .catch()
})
.finally(() => {
// 无论成功还是失败都会执行
console.log('Request completed.');
})
.then(finalResult => {
// 无论之前的调用是成功还是失败,都会执行到这里
console.log('Final Result:', finalResult);
});
什么是返回值呢?
在HTTP请求发送到controller层,controller每一个方法都有返回值,这个就是要接收到的
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@RestController
public class DataController {
private static final String DATA_FOR_VALUE1 = "Data for value1";
private static final String DATA_FOR_VALUE2 = "Data for value2";
@GetMapping("/data")
public String getData(@RequestParam String param1, @RequestParam String param2) {
try {
String result = "{ \"param1\": \"" + DATA_FOR_VALUE1 + "\", \"param2\": \"" + DATA_FOR_VALUE2 + "\" }";
return result;
} catch (Exception e) {
// 发生错误时返回错误信息,并设置 HTTP 状态码为 500 Internal Server Error
throw new CustomException("Internal Server Error");
}
}
}
这个示例中,返回的String类型就是返回值