文章目录

  • 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请求相关推荐

  1. ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载

    因为我们使用jQuery,这意味着需要调用 jQuery.getScript 和 jQuery.getJSON 函数. 我知道这些函数都是异步执行(asyncronously)并且会延迟一段时间返回, ...

  2. 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败

    背景: 1.前端Web中有两个域名,a.com和b.com,其中a.com是访问主站(页面),b.com是数据提交接口的服务器(XHR请求) 2.a.com中用XHR调用b.com/cerate[没有 ...

  3. AJAX POST 请求

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  4. Ajax异步请求-简单模版

    1 <script type="text/javascript"> 2 window.onload = function () { 3 document.getElem ...

  5. 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...

    本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...

  6. php acl,php – 访问控制和XHR请求

    我正在为自定义框架的访问控制实现而苦苦挣扎. 不需要RBAC粒度,所以我决定采用某种资源的ACL 控制器动作. 这是数据库结构: 用户: >约翰 >玛丽 >格雷格 user_grou ...

  7. AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式

    HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...

  8. php原生的异步请求,原生JavaScript实现Ajax异步请求

    ajax现在是一种非常流行的技术,现在虽然可以利用JQuery或者一些第三方插件甚至微软提供的一些控件可以方面的实现ajax功能,但是明白其原理也是非常重要的,下面是来使用纯javascript实现获 ...

  9. ajax post请求导致的跨域和浏览器兼容性问题

    前言 过完年来我们老大安排我做的一个小需求,就是往现有的.net客服查询系统增加一个二级菜单,点击菜单在对话框中输入账号信息即可查询到该用户的信息.当时做这个的时候遇到了一些问题,具体可查看解决了异常 ...

最新文章

  1. UNITY_MATRIX_IT_MV[Matrix]
  2. ajax请求get方法的封装,使用jQuery中Ajax的封装函数——$.get()
  3. EffectiveC++编程的50个建议
  4. python通过opencv使用图片制作简单视频(亲测)
  5. datax源码阅读一:python文件
  6. VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题
  7. mib 文件中的 rowstatus 参数_k8s yaml格式的pod定义文件详解
  8. eplan连接定义点不显示_显示无线桥接成功,但是连接副路由器的设备依然上不去网的问题...
  9. (5)Redis主从同步原理及详细配置
  10. MySQL8 OCP 证书
  11. 直接选择排序到堆排序做的那些改进
  12. 5.10300 - Ecological Premium
  13. 最近在做微信支付委托代扣交互图。总结了几点需要注意的地方,与大家分享一下
  14. 某商店规定,某商品一次购买5件以上(包含5件)打九折,一次购买10件以上(包含10件)打八折,请根据单价和数量球总价
  15. 领航优配|券商板块大幅走高,东方财富盘中涨超15%
  16. K3实现按虚拟件/组件发料
  17. 使用malloc函数分配空间
  18. USB设备路径是什么,是什么格式的?
  19. XSSF:POI IndexedColors 编码 与 颜色 对照(本想自定义颜色,不方便实现。先尽量找个能用的)
  20. 挣值管理EVM详细解释及应用,实例讲解

热门文章

  1. 【Nature 子刊】I型HLA基因中和癌症相关的体细胞突变--转载
  2. 关于QC样本的制备与分析
  3. IIS搭建http服务
  4. HTTP状态码code类型
  5. sqlserver存储过程调试方法
  6. 【Vue学习笔记】尚硅谷Vue2.0+Vue3.0全套教程丨vue.js从入门到精通
  7. 上传file时accept限制文件类型pdf、doc、docx、 jpg、 png、xls 、xlsx等格式
  8. GBase 8s 客户端工具之dbaccess
  9. “第二届openGauss每日一练打卡活动” 获奖名单公布!
  10. 笔记本液晶屏改装显示器