首页 > 其他分享 >请求和响应——原生的JS实现方式

请求和响应——原生的JS实现方式

时间:2023-05-24 23:36:35浏览次数:78  
标签:原生 readyState xmlhttp 请求 JS 响应 服务器 POST XMLHttpRequest


请求和响应--原生的JS实现方式

有时候我们不得不用原生方式去请求,而这又不常用,所以记录一下,方便下次直接使用。

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

// 1.创建核心对象
var xmlhttp;
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
	 xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
	 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

	
// 2. 建立连接
/*
	参数:
	1. 请求方式:GET、POST
	       * get方式,请求参数在URL后边拼接。send方法为空参
	       * post方式,请求参数在send方法中定义
	2. 请求的URL:
	3. 同步或异步请求:true(异步)或 false(同步)
	
*/

xmlhttp.open("GET","ajaxServlet?username=tom",true);
	
// 3.发送请求
xmlhttp.send();
	
// 4.接受并处理来自服务器的响应结果
// 获取方式 :xmlhttp.responseText
// 什么时候获取?当服务器响应成功后再获取
	
//当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
xmlhttp.onreadystatechange=function()
{
	// 判断readyState就绪状态是否为4,判断status响应状态码是否为200
	if (xmlhttp.readyState==4 && xmlhttp.status==200)
	{
	    //获取服务器的响应结果
	    var responseText = xmlhttp.responseText;
	    alert(responseText);
	 }
}

方法

描述

open(method,url,async)

规定请求的类型、URL 以及是否异步处理请求。

  • method:请求的类型;GET 或 POST
  • url:文件在服务器上的位置
  • async:true(异步)或 false(同步)

send(string)

将请求发送到服务器。

  • string:仅用于 POST 请求

使用GET 还是 POST?

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

 

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

属性

描述

onreadystatechange

存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

readyState

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪

status

200: "OK"

404: 未找到页面

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

 

XMLHttpRequest 是 AJAX 的基础。

参考的文档:W3School


标签:原生,readyState,xmlhttp,请求,JS,响应,服务器,POST,XMLHttpRequest
From: https://blog.51cto.com/u_16128050/6343390

相关文章

  • 【Node】node.js安装与配置(详细步骤)
    node.js安装与配置(详细步骤)一、安装Node.js1.1下载1.2安装1.3环境变量二、验证是否安装成功三、修改模块下载位置3.1查看npm默认存放位置3.2在nodejs安装目录下,创建“node_global”和“node_cache”两个文件夹3.3修改默认文件夹3.4测试默认位置是否更改成功四、设置......
  • springboot long js 长整形
    项目中,数据库用bigint类型存储主键,java实体类中用long类型来存储对应的属性。这个时候前台通过ajax请求获取json数据时,使用了jackson来转换。但是javascript中number类型存储的长度小于long,精度为17位,超过17位的部分就会自动补0,而long类型数据是19或者20位,所以会出现丢失精度的问......
  • jS 输入框限制
    <input  onkeypress ="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46"    onpaste ="return !clipboardData.getData('text').match(/\D/)"    ondragenter ="return false"    style=&quo......
  • python:Error: EPERM: operation not permitted, mkdir 'F:\Program Files\nodejs\n
     可以发现文件没有权限npmERR!Error:EPERM:operationnotpermitted,mkdir'F:\ProgramFiles\nodejs\node_global\node_modules'将nodejs的文件权限改为完全控制之后操作即可 ......
  • js 中数组转树 递归方法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content="w......
  • js前端fetch参数
    constresponse=fetch(url,{method:"GET",//请求方式headers:{//定制http请求的标头"Content-Type":"text/plain;charset=UTF-8"},body:undefined,//post请求的数据体,因为此时为get请求,故为undefinedreferrer:"about:client",referrerPolicy:......
  • 用jquery或js获取select标签中选中的option值及文本
    本文目录一、示例二、获取option的文本三、获取option中value的值四、代码展示一、示例<selectid="selectedTest"οnchange="doSomething();"><optionvalue="abc">北京</option><optionvalue="edf">上海</option><opt......
  • ZJSU五月多校合训
    强度焦虑制造者具体而言,zszz3在每个游戏版本中都会推出一名新角色,或加强一名旧角色。玩家必须将这名新角色或被加强的旧角色编入队伍,否则就会落后于版本。而编队数量是有限的,这意味着玩家可能不得不踢出一名编队中现有的角色。而若被加强的角色恰好在玩家的编队中,则可以开心......
  • 【踩坑记录】autojs使用while(1)导致broadcast无法正常执行
    autojs中的死循环操作最好使用setInterval而不是,while(1)。 while(1)会导致其他语句无法执行,这里面包括了信号相关的,比如今天踩得坑: 用events.broadcast.emit发出信号后,相应的on语句无法正常执行,后来才发现原来是为了一个用while(1)来执行死循环导致整个线程全部死在了这里,......
  • window 10 安装node.js时遇到2502 2503错误解决方法
    最近想安装一下node.js,可是在安装过程中出现了2503和2502的问题,如下图:不过除了这些代码外,微软并没有提供解决办法。这一问题出现在Win7/Win8.1/Win10中,原因就是C:\Windows\Temp文件夹NTFS权限错误。为了能够让WindowsInstaller操作正确,当前账户需要有Temp文件夹完全管理员权......