<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>The Ajax 01</h1>
<fieldset>
<legend>ajax表单请求</legend>
<form>
<input type="text" name="name" onblur="doCheck()" onfocus="doClear()">
<input type="button" onclick="doSave()" value="Save">
</form>
<span id="resultId"></span>
<!-- 希望此位置服务端响应结果 -->
</fieldset>
<script type="text/javascript">
//点击框清楚残留数据
function doClear() {
document.forms[0].name.value = "";//框中数据清空
document.getElementById("resultId").innerHTML = "";//下面提示数据清空
}
//封装共性;
function doCheck() {
//请求url
var url = "doCheck";
//定义请求参数
var name = document.forms[0].name.value;//获取name的值
var params = "name=" + name;//传参数给服务端
//发送异步请求get
doAjaxGet(url, params, function(result) {//rsult随便起的名字这个参数对应下面的callback
document.getElementById("resultId").innerHTML = result;//获取上面哪个span元素的参数
})
}
//检测名字是否已存在
function doAjaxGet(url, params, callback) {
let xhr = new XMLHttpRequest();
//2.定义HR对象的监听
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
callback(xhr.responseText);//
//缓存数据
}
}
//建立连接
// 返回的是doCheck但是拼接了name这个值?
xhr.open("GET", url + "?" + params, true);
//发送请求
xhr.send(null);
}
//点击事件 封装共性;
function doSave() {//另外声明了一个函数
//这个是url的参数
var url = "doSave";//把值传给了url的服务端
//这个是name的参数
let name = document.forms[0].name.value;//获取name的数值
var params = "name=" + name;
doAjaxPost(url, params, function(a) {
document.getElementById("resultId").innerHTML = a;//获取上面哪个span元素的参数
})
}
//点击事件
function doAjaxPost(url, params, callback) {//这里有url的值和name的数值和新定义的一个参数
//1/创建XHR对象
let xhr = new XMLHttpRequest();
//2.定义XHR对象的监听
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
callback(xhr.responseText);//调用函数
//缓存数据
document.getElementById("resultId").innerHTML = xhr.responseText;
}
}
//3.建立连接(post需要设置请求头信息)
xhr.open("POST", url, true)//异步请求
xhr.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");//这个是设置请求头
//4.发送请求
let name = document.forms[0].name.value;//获取name的值
//构建参数对象三种方式
//var p="name="+name;淘汰
//let p = `name=${name}`;//模板字符串 //var p={"name":name};js对象原生的ajax是不能这样用的
xhr.send(params);//post的请求参数需要写到此位置
//接受name的数值
}
</script>
</body>
</html>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。