# 什么是ajax?
Asynchronous JavaScript and XML:异步的js或xml,以前用的比较多的是xml传递数据,现在基本用js传递数据
# 作用
局部刷新页面:当然单纯地使用原生的js做局部刷新如果碰到复杂的控件会相当麻烦,使用前端框架(layui,vue)会方便很多
注意事项
# 注意事项?
1 注:为什么低版本的ie不支持XMLHttpRequest?
因为最早开发网页动态脚本的是网景公司(已被甲骨文收购),微软公司觉得不错仿着做了一个
网页动态脚本语言,结果导致用不同的浏览器需要使用不同的脚本语言;最终万维网(W3C:经常
整一些技术规范的技术机构)确认了es特性,用的是JavaScript,其他公司开发浏览器也默认的
兼容JavaScript,只有微软这个头铁娃始终让ie浏览器坚持使用自己的脚本语言,虽然因为后来
大势所趋在新版本上妥协了,不过的ie的老版本就相当恶心了
?
2 注:为什么没有参数传递的时候要加一个随机唯一的无用参数?
因为浏览器缓存问题,如果你的请求地址每次发送都是不变的,浏览器会默认把第一次请求的数据
从缓存中拿出来给你,这样不管你怎么修改都是拿到第一次提交的数据
?
3 注:为什么不使用变量var,而使用变量let?
因为var是全局变量,直接绑定在window(属于BOM对象)上面的,而let是局部变量,在作用域中
用完即毁,下面关于var类型的注意说两点:
- 禁止在不同的js中用var来声明同一个变量名:
因为如果一个页面需要引用多个js文件时,而这些js文件中又用var来声明同一个变量名,后面的
变量值会覆盖掉之前的
- 禁止在if或for中使用var来声明变量,因为作为全局变量,出了if或for作用域还能使用
除了以上两点,var变量还是可以使用的,不过es6新加了let之后,每次使用var时会出现警告
前端页面
后端业务
package com.qf.servlet;
?
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
?
/**
* ajax请求测试控制器
*/
后端代码
后端代码
注意事项
- contentType: ‘application/json‘
请求内容转换成了json字符串格式,后端必须使用json相关jar解析才能使用,或者在SpringMVC框架中可以使用@RequestBody注解
来转换
= 可以去掉,这样后台就可以正常接收了,不过在restful风格中使用put请求时如果参数过多且格式有问题的话需要用到这个
- dataType: ‘json‘
返回内容从json字符串格式转换成对象、数组或字符串,后端必须将数据转换成json字符串后才能返回,注意:在这里必须用相关jar包
转换的json字符串才能使用,自己直接手写的不算,会跑到error中去
后端代码
package com.qf.servlet;
?
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
?
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
?
/**
* ajax请求测试控制器
*/
原文:https://www.cnblogs.com/lll919397/p/14691233.html