AJAX学习笔记(四、请求与响应)

举报
三分恶 发表于 2021/04/30 03:27:17 2021/04/30
【摘要】 向服务器发送请求 工作原理:  AJAX与后台的交互可以分为以下几步: 1、用户从前端发送请求,JavaScript中调用XMLHttpRequest对象。 2、HTTP请求由XMLHttpRequest对象发送到服务器。 3、服务器使用JAVA,PHP,ASP.net等与数据库交互。检索数据。 4、服务器将XML数据或JSON数据发送到XMLHttpReque...

向服务器发送请求

工作原理:

在这里插入图片描述

 AJAX与后台的交互可以分为以下几步:
1、用户从前端发送请求,JavaScript中调用XMLHttpRequest对象。
2、HTTP请求由XMLHttpRequest对象发送到服务器。
3、服务器使用JAVA,PHP,ASP.net等与数据库交互。检索数据。
4、服务器将XML数据或JSON数据发送到XMLHttpRequest回调函数。HTML和CSS数据显示在浏览器上。

向服务器发送请求

AJAX向服务器发送请求主要使用XMLHttpRequest 对象的 open() 和 send() 方法:

方法 描述
open(method,url,async) 规定请求的类型、URL 以及是否异步处理请求。
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
send(string) 将请求发送到服务器。
string:仅用于 POST 请求

Get与Post

GET请求特点:

.GET请求可被缓存
.GET请求保留在浏览器历史记录中
.GET请求可被收藏为书签
.GET请求不应在处理敏感数据时使用
.GET请求有长度限制
.GET请求只应当用于取回数据

Post请求特点

.POST请求不会被缓存
.POST请求不会保留在浏览器历史记录中
.POST请求不能被收藏为书签
.POST请求对数据长度没有要求

如果需要像 HTML 表单那样 POST 数据,应当使用setRequestHeader()来添加 HTTP 头。然后在send()方法中规定希望发送的数据:

xmlhttp.open("POST","ajax_test.html",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("fname=Henry&lname=Ford");

  
 
  • 1
  • 2
  • 3
对比

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
.无法使用缓存文件(更新服务器上的文件或数据库)
.向服务器发送大量数据(POST 没有数据量限制)
.发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

url

open() 方法的 url 参数是服务器上文件的地址

异步

Async=true,异步。
Async=false,不异步。
异步是一个巨大的进步,一般情况下都会选择异步。

响应

AJAX - 服务器响应

如需获得来自服务器的响应,需要使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

属性 描述
responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据。
responseText属性:

如果来自服务器的响应并非 XML,使用 responseText 属性:

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

  
 
  • 1
responseXML属性:

如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:

xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{ txt=txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("myDiv").innerHTML=txt;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

jsp后端实例

做一个简单的实例,后端就用jsp。


check.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>猜姓名</title>
<style type="text/css">
</style>
</head>
<body> <div id="container"> <span>猜猜我的名字 :</span> <input id="name" name="name" onkeyup="check()" type="text"> <!-- 设置keyup事件为后端请求函数 --> <span id="checkResult"></span> </div> <script type="text/javascript"> //创建XMLHttpRequest对象 var xmlhttp; if (window.XMLHttpRequest) { //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp = new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } function check(){ //向后端请求函数 var name = document.getElementById("name").value; var url = "http://localhost:8080/AjaxDemo/checkResult.jsp?name="+name; //通过GET方法发送信息,得向 URL 添加信息 xmlhttp.onreadystatechange=checkResult; //响应函数 xmlhttp.open("GET",url,true);   //设置访问的页面 xmlhttp.send(null);  //执行访问 //null表示没有参数,因为参数已经通过“GET" 方式,放在url里了。 //只有在用"POST",并且需要发送参数的时候,才会使用到send。 } function checkResult(){ //处理响应函数 if (xmlhttp.readyState==4 && xmlhttp.status==200)  //请求已完成,响应已就绪且状态"OK" document.getElementById('checkResult').innerHTML=xmlhttp.responseText; //获得字符串形式的响应数据,给span块赋值 } </script>
</body>
</html>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>检查结果</title>
</head>
<body> <% String name = request.getParameter("name"); if("Sandy".equalsIgnoreCase(name)) out.print("<font color='green'>恭喜你猜对了</font>"); else out.print("<font color='red'>加油,就快对了</font>"); %>
</html>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在tomcat上跑一下,
在这里插入图片描述
在这里插入图片描述


1、https://www.w3cschool.cn/ajax/ajax-xmlhttprequest-send.html
2、https://www.w3cschool.cn/ajax/ajax-xmlhttprequest-response.html
3、https://www.runoob.com/ajax/ajax-xmlhttprequest-send.html
4、http://how2j.cn/k/ajax/ajax-stepbystep/466.html#nowhere
5、https://www.runoob.com/ajax/ajax-xmlhttprequest-response.html

文章来源: blog.csdn.net,作者:三分恶,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/sinat_40770656/article/details/95457750

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。