创建XMLHttpRequest对象
调用open()方法打开与服务器的连接
调用send()方法发送请求
为XMLHttpRequest对象指定onreadystatechange事件函数,这个函数会在XMLHttpRequest的1、2、3、4,四种状态时被调用
XMLHttpRequest对象的status属性表示服务器状态码,它只有在readyState为4时才能获取到
XMLHttpRequest对象的responseText属性表示服务器响应内容,它只有在readyState为4时才能获取到!
POST请求必须设置ContentType请求头的值为application/x-。表单的enctype默认值就是为application/x-!因为默认值就是这个,所以大家可能会忽略这个值!当设置了<form>的enctype=” application/x-”时,等同与设置了Cotnent-Type请求头。
但在使用AJAX发送请求时,就没有默认值了,这需要我们自己来设置请求头
当没有设置Content-Type请求头为application/x-www-form-urlencoded时,Web容器会忽略请求体的内容。所以,在使用AJAX发送POST请求时,需要设置这一请求头,然后使用send()方法来设置请求体内容。
3.AJAX第三例(用户名时候已被注册) 3.1功能介绍在注册表单中,当用户填写了用户名后,把光标移开后,会自动向服务器发送异步请求。服务器返回true或false,返回true表示这个用户名已经被注册过,返回false表示没有注册过。
客户端得到服务器返回的结果后,确定是否在用户名文本框后显示“用户名已被注册”的错误信息!
regist.jsp页面中给出注册表单;
在username表单字段中添加onblur事件,调用send()方法;
send()方法获取username表单字段的内容,向服务器发送异步请求,参数为username;
RegistServlet:获取username参数,判断是否为“itcast”,如果是响应true,否则响应false;
regist.jsp
<script type="text/javascript"> function createXMLHttpRequest() { try { return new XMLHttpRequest(); } catch (e) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } } function send() { var xmlHttp = createXMLHttpRequest(); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { if(xmlHttp.responseText == "true") { document.getElementById("error").innerHTML = "用户名已被注册!"; } else { document.getElementById("error").innerHTML = ""; } } }; xmlHttp.open("POST", "/RegistServlet", true); xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); var username = document.getElementById("username").value; xmlHttp.send("username=" + username); } </script> <h1>注册</h1> <form action="" method="post"> 用户名:<input type="text" onblur="send()" /><span></span><br /> 密 码:<input type="text" /><br /> <input type="submit" value="注册" /> </form>RegistServlet.java
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String username = request.getParameter("username"); if("itcast".equals(username)) { response.getWriter().print(true); } else { response.getWriter().print(false); } } JSON 1.什么是JSONJSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
JSON是用字符串来表示JavaScript对象,例如可以在Servlet中发送一个JSON格式的字符串给客户端JavaScript,JavaScript可以执行这个字符串,得到一个JavaScript对象
JSON语法:
数据在名称/值对中
数据有逗号分隔
花括号保存对象
方括号保存数组
注意:key也要在双引号中