Ajax XHR请求
文章目录
- AJAX 向服务器发送请求请求
- 向服务器发送请求
- GET 还是 POST?
- GET 请求
- POST 请求
- url 服务器上的文件
- 异步 True 或 False?
- Async=true
- Async = false
AJAX 向服务器发送请求请求
XMLHttpRequest 对象用于和服务器交换数据。
向服务器发送请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
方法 | 描述 |
---|---|
open(method,url,async) |
规定请求的类型、URL 以及是否异步处理请求。 method:请求的类型;GET 或 POST url:文件在服务器上的位置 async:true(异步)或 false(同步) |
send(string) |
将请求发送到服务器。 string:仅用于 POST 请求 |
GET 还是 POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
- 无法使用缓存文件(更新服务器上的文件或数据库)
- 向服务器发送大量数据(POST 没有数据量限制)
- 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
GET 请求
一个简单的 GET 请求:
实例
xmlhttp.open("GET", "/try/ajax/demo_get.php", true);
xmlhttp.send();
在上面的例子中,您可能得到的是缓存的结果。
为了避免这种情况,请向 URL 添加一个唯一的 ID:
实例
xmlhttp.open("GET", "/try/ajax/demo_get.php?t=" + Math.random(), true);
xmlhttp.send();
如果您希望通过 GET 方法发送信息,请向 URL 添加信息:
实例
xmlhttp.open("GET", "/try/ajax/demo_get.php?fname=Henry&lname=Ford", true);
xmlhttp.send();
POST 请求
一个简单 POST 请求:
实例
xmlhttp.open("POST", "/try/ajax/demo_post.php", true);
xmlhttp.send();
如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
实例
xmlhttp.open("POST", "/try/ajax/demo_post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
方法 | 描述 |
---|---|
setRequestHeader(header,value) |
向请求添加 HTTP 头。 header: 规定头的名称 value: 规定头的值 |
url 服务器上的文件
open() 方法的 url 参数是服务器上文件的地址:
xmlhttp.open("GET","ajax_test.html",true);
该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务)。
异步 True 或 False?
AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true:
xmlhttp.open("GET","ajax_test.html",true);
对于 web 开发人员来说,发送异步请求是一个巨大的进步。很多在服务器执行的任务都相当费时。AJAX 出现之前,这可能会引起应用程序挂起或停止。
通过 AJAX,JavaScript 无需等待服务器的响应,而是:
- 在等待服务器响应时执行其他脚本
- 当响应就绪后对响应进行处理
Async=true
当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:
实例
xmlhttp.onreadystatechange = function() {if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {document.getElementById("myDiv").innerHTML = xmlhttp.responseText;}
}
xmlhttp.open("GET", "/try/ajax/ajax_info.txt", true);
xmlhttp.send();
您将在稍后的章节学习更多有关 onreadystatechange 的内容。
Async = false
如需使用 async=false,请将 open() 方法中的第三个参数改为 false:
xmlhttp.open("GET","test1.txt",false);
我们不推荐使用 async=false,但是对于一些小型的请求,也是可以的。
请记住,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。
注意:当您使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可:
实例
xmlhttp.open("GET", "/try/ajax/ajax_info.txt", false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
Ajax XHR请求相关推荐
- ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载
因为我们使用jQuery,这意味着需要调用 jQuery.getScript 和 jQuery.getJSON 函数. 我知道这些函数都是异步执行(asyncronously)并且会延迟一段时间返回, ...
- 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败
背景: 1.前端Web中有两个域名,a.com和b.com,其中a.com是访问主站(页面),b.com是数据提交接口的服务器(XHR请求) 2.a.com中用XHR调用b.com/cerate[没有 ...
- AJAX POST 请求
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- Ajax异步请求-简单模版
1 <script type="text/javascript"> 2 window.onload = function () { 3 document.getElem ...
- 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...
- php acl,php – 访问控制和XHR请求
我正在为自定义框架的访问控制实现而苦苦挣扎. 不需要RBAC粒度,所以我决定采用某种资源的ACL 控制器动作. 这是数据库结构: 用户: >约翰 >玛丽 >格雷格 user_grou ...
- AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式
HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...
- php原生的异步请求,原生JavaScript实现Ajax异步请求
ajax现在是一种非常流行的技术,现在虽然可以利用JQuery或者一些第三方插件甚至微软提供的一些控件可以方面的实现ajax功能,但是明白其原理也是非常重要的,下面是来使用纯javascript实现获 ...
- ajax post请求导致的跨域和浏览器兼容性问题
前言 过完年来我们老大安排我做的一个小需求,就是往现有的.net客服查询系统增加一个二级菜单,点击菜单在对话框中输入账号信息即可查询到该用户的信息.当时做这个的时候遇到了一些问题,具体可查看解决了异常 ...
最新文章
- UNITY_MATRIX_IT_MV[Matrix]
- ajax请求get方法的封装,使用jQuery中Ajax的封装函数——$.get()
- EffectiveC++编程的50个建议
- python通过opencv使用图片制作简单视频(亲测)
- datax源码阅读一:python文件
- VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题
- mib 文件中的 rowstatus 参数_k8s yaml格式的pod定义文件详解
- eplan连接定义点不显示_显示无线桥接成功,但是连接副路由器的设备依然上不去网的问题...
- (5)Redis主从同步原理及详细配置
- MySQL8 OCP 证书
- 直接选择排序到堆排序做的那些改进
- 5.10300 - Ecological Premium
- 最近在做微信支付委托代扣交互图。总结了几点需要注意的地方,与大家分享一下
- 某商店规定,某商品一次购买5件以上(包含5件)打九折,一次购买10件以上(包含10件)打八折,请根据单价和数量球总价
- 领航优配|券商板块大幅走高,东方财富盘中涨超15%
- K3实现按虚拟件/组件发料
- 使用malloc函数分配空间
- USB设备路径是什么,是什么格式的?
- XSSF:POI IndexedColors 编码 与 颜色 对照(本想自定义颜色,不方便实现。先尽量找个能用的)
- 挣值管理EVM详细解释及应用,实例讲解
热门文章
- 【Nature 子刊】I型HLA基因中和癌症相关的体细胞突变--转载
- 关于QC样本的制备与分析
- IIS搭建http服务
- HTTP状态码code类型
- sqlserver存储过程调试方法
- 【Vue学习笔记】尚硅谷Vue2.0+Vue3.0全套教程丨vue.js从入门到精通
- 上传file时accept限制文件类型pdf、doc、docx、 jpg、 png、xls 、xlsx等格式
- GBase 8s 客户端工具之dbaccess
- “第二届openGauss每日一练打卡活动” 获奖名单公布!
- 笔记本液晶屏改装显示器