1.创建XMLHttpRequest对象

  1. function createXMLHTTPRequest() {
  2. //1.创建XMLHttpRequest对象
  3. //这是XMLHttpReuquest对象无部使用中最复杂的一步
  4. //需要针对IE和其他类型的浏览器建立这个对象的不同方式写不同的代码
  5. var xmlHttpRequest;
  6. if (window.XMLHttpRequest) {
  7. //针对FireFox,Mozillar,Opera,Safari,IE7,IE8
  8. xmlHttpRequest = new XMLHttpRequest();
  9. //针对某些特定版本的mozillar浏览器的BUG进行修正
  10. if (xmlHttpRequest.overrideMimeType) {
  11. xmlHttpRequest.overrideMimeType("text/xml");
  12. }
  13. } else if (window.ActiveXObject) {
  14. //针对IE6,IE5.5,IE5
  15. //两个可以用于创建XMLHTTPRequest对象的控件名称,保存在一个js的数组中
  16. //排在前面的版本较新
  17. var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
  18. for ( var i = 0; i < activexName.length; i++) {
  19. try {
  20. //取出一个控件名进行创建,如果创建成功就终止循环
  21. //如果创建失败,回抛出异常,然后可以继续循环,继续尝试创建
  22. xmlHttpRequest = new ActiveXObject(activexName[i]);
  23. if(xmlHttpRequest){
  24. break;
  25. }
  26. } catch (e) {
  27. }
  28. }
  29. }
  30. return xmlHttpRequest;
  31. }

2.get请求

  1. function get(){
  2. var req = createXMLHTTPRequest();
  3. if(req){
  4. req.open("GET", "http://test.com/?keywords=手机", true);
  5. req.onreadystatechange = function(){
  6. if(req.readyState == 4){
  7. if(req.status == 200){
  8. alert("success");
  9. }else{
  10. alert("error");
  11. }
  12. }
  13. }
  14. req.send(null);
  15. }
  16. }

3.post请求

  1. function post(){
  2. var req = createXMLHTTPRequest();
  3. if(req){
  4. req.open("POST", "http://test.com/", true);
  5. req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=gbk;");
  6. req.send("keywords=手机");
  7. req.onreadystatechange = function(){
  8. if(req.readyState == 4){
  9. if(req.status == 200){
  10. alert("success");
  11. }else{
  12. alert("error");
  13. }
  14. }
  15. }
  16. }
  17. }

post请求需要设置请求头

4.    readyState与status:

readyState有五种状态:

  0 (未初始化): (XMLHttpRequest)对象已经创建,但还没有调用open()方法;
  1 (载入):已经调用open() 方法,但尚未发送请求;
  2 (载入完成): 请求已经发送完成;
  3 (交互):可以接收到部分响应数据;
  4 (完成):已经接收到了全部数据,并且连接已经关闭。
如此一来,你应该就能明白readyState的功能,而status实际是一种辅状态判断,只是status更多是服务器方的状态判断。关于status,由于它的状态有几十种,我只列出平时常用的几种:
  100——客户必须继续发出请求
  101——客户要求服务器根据请求转换HTTP协议版本
  200——成功
  201——提示知道新文件的URL
  300——请求的资源可在多处得到
  301——删除请求数据
  404——没有发现文件、查询或URl
  500——服务器产生内部错误

原生Ajax书写的更多相关文章

  1. 原生AJAX请求教程

    ajax 即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用.本质是在 HTTP 协议的基础上以异步的方式与服务器进行通信. 异 ...

  2. Servlet处理原生Ajax请求

    萌新小白人生中的第一篇博客,难免会有差错,还望各位大佬多多包涵. 1. Ajax技术简介      Ajax(Asynchronous JavaScript and XML,异步JavaScript和 ...

  3. 原生 ajax 请求

    ajax 即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用.本质是在 HTTP 协议的基础上以异步的方式与服务器进行通信. 异 ...

  4. 原生Ajax

    使用原生Ajax 验证用户名是否被注册 创建出注册信息: <h1>注册信息</h1><input type="text" name="txt ...

  5. JS原生ajax与Jquery插件ajax深入学习

    序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来jquery插件ajax方法,于是就行了一些总结,因 ...

  6. 原生Ajax 和Jq Ajax

    前言:这次介绍的是利用ajax与后台进行数据交换的小例子,所以demo必须通过服务器来打开.服务器环境非常好搭建,从网上下载wamp或xampp,一步步安装就ok,然后再把写好的页面放在服务器中指定的 ...

  7. 手写原生ajax

    关于手写原生ajax重要不重要,各位道友自己揣摩吧, 本着学习才能进步,分享大家共同受益,自己也在自己博客里写一下 function createXMLHTTPRequest() { //1.创建XM ...

  8. 浅谈AJAX的基本原理和原生AJAX的基础用法

    一.什么是AJAX? AJAX,即"Asynchronous Javascript And XML",翻译为异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技 ...

  9. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

随机推荐

  1. 11个实用jQuery日历插件

    1. FullCalendar FullCalendar是很出名的jQuery日历插件,它支持拖拽等功能,整合了Google Calendar,而且可以通过JSON来绑定事件,设计师可以轻松地自定义日 ...

  2. SOAP vs REST

    Both methods are used by many of the large players. It's a matter of preference. My preference is RE ...

  3. Even Fibonacci numbers

    --Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting ...

  4. Installing Lua in Mac

    Lua is distributed in source form. You need to build it before using it. Building Lua should be stra ...

  5. Elasticsearch 学习~

    http://cloud.51cto.com/art/201505/476322.htmEs https://www.gitbook.com/book/asdgh000/mongodb-elastic ...

  6. Git PHP提交

    做了个小的DEMO,可以查看: https://github.com/feixiang/webgit.git 这几天一直在郁闷的事情. Git在shell里面执行得好好的,apache运行用户也改成了 ...

  7. 李洪强iOS开发之OC[013] -类的创建的练习

    // //  main.m //  12 - 类的创建练习 // //  Created by vic fan on 16/7/9. //  Copyright © 2016年 李洪强. All ri ...

  8. ubuntu下安装pthread的manpages(man 手册) 在Ubuntu中查看STL帮助

    http://blog.csdn.net/leisure512/article/details/4881391 由于学习多线程编程,所以用到pthread,但是man的时候却发现没有pthread函数 ...

  9. VirtualUI - Convert your Windows App to HTML5

    http://www.cybelesoft.com/thinfinity/virtualui/

  10. javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

    使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty  和@NotBlank 区别 @NotEmpty 用在集合类上面@NotBlank 用 ...