一、什么是ajax?有什么作用?
ajax中文翻译为:异步的js和xml。用于网页向服务器发送请求(可支持同步和异步2种方式),接收服务器响应后的处理数据。
注:同步,网页发送请求后,锁定当前网页(不能继续操作);异步,网页发送请求后,可以继续操作网页发送请求。
二、如何获得ajax对象?
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>ajax</title> </head> <body> <a href="javascript:;" onclick="alert(getXhr())">获取ajax对象</a> <script type="text/javascript"> function getXhr() { var xhr; xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHttp"); return xhr; } </script> </body> </html>
这段代码的逻辑是:点击页面中的链接时,调用onclick事件中的getXhr()方法,返回一个xhr对象。
这里要注意的是href="javascript:;"这句代码代表点击链接时什么也不执行(跳转)。
for example:
<a href="javascript:;">点击链接后不跳转</a>
三、使用XMLHttpRequest(xhr)对象发送get请求?
步骤:
1、获得XMLHttpRequest对象;
2、为XMLHttpRequest绑定回调函数;
3、创建请求;
4、发送请求;
前端:
<a href="javascript:;" onclick="getText()">获取服务端文本数据</a> <script type="text/javascript"> function getXhr() { var xhr; xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHttp"); return xhr; } </script> <script type="text/javascript"> function getText() { var xhr = getXhr(); xhr.onreadystatechange = function () { if(xhr.readyState==4&&xhr.status==200){ var txt = xhr.responseText; alert(txt); } }; xhr.open("get","get_text.do",true); xhr.send(null); } </script>
服务端:
package controller; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class ActionServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String uri = request.getRequestURI();// /test/get_text.do System.out.println(uri); String path = uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf(".")); if(path.equals("/get_text")){ out.println("这是来自服务端的数据"); } out.close(); } }
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>ActionServlet</servlet-name> <servlet-class>controller.ActionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ActionServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
效果图:
四、使用XMLHttpRequest(xhr)对象发送post请求?
步骤:
1、获得XMLHttpRequest对象;
2、为XMLHttpRequest绑定回调函数;
3、创建请求;
4、手动添加请求头
5、发送请求;name-value
<a href="javascript:;" onclick="();">post请求方式获取服务端数据</a> <script type="text/javascript"> function getXhr() { var xhr; xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHttp"); return xhr; } </script> <script type="text/javascript"> function () { var xhr = getXhr(); xhr.onreadystatechange = function () { if(xhr.readyState==4&&xhr.status==200){ var text = xhr.responseText; alert(text); } }; xhr.open("post","post_text.do",true); xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); xhr.send("name=zhoujie"); } </script>
使用链接的方式提交请求为get请求!!所以点击链接返回不了数据。
<input type="button" onclick="getPostData()" value="提交post请求"/> <script type="text/javascript"> function getXhr() { var xhr; xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHttp"); return xhr; } </script> <script type="text/javascript"> function getPostData() { var xhr = getXhr(); xhr.onreadystatechange = function () { if(xhr.readyState==4&&xhr.status==200){ var text = xhr.responseText; alert(text); } }; xhr.open("post","post_text.do",true); xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); xhr.send("name=1"); } </script>
package controller; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class ActionServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String uri = request.getRequestURI();// /test/get_text.do System.out.println(uri); String path = uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf(".")); if(path.equals("/get_text")){ out.println("这是来自服务端的数据"); }else if(path.equals("/post_text")){ String name = request.getParameter("name"); out.println(name); } out.close(); } }
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>ActionServlet</servlet-name> <servlet-class>controller.ActionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ActionServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
WHY??
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦