Ajax

作者: 童_268a | 来源:发表于2017-10-21 17:59 被阅读0次

一、ajax基本概念

ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML)
ajax的核心是XmlHttpRequest对象。

一 ajax原理:

1.利用html和CSS来实现页面,表达信息 
2.运用XmlHttpRequest对象来和服务器进行数据交换 
3.JavaScript操作DOM,实现局部刷新

二 XMLHttpRequest对象的创建

 // . 创建对象
        var xhr = new XMLHttpRequest();

三、 XmlHttpRequest发送请求

// 请求方式,请求地址,是否异步.

open(method,url,async);

//请求内容,get请求的请求内容已经拼接在了url后面,所以send没有参数,
//post请求一定要有参数。

send(string);

例如get请求:

    // 1. 创建对象
        var xhr = new XMLHttpRequest();
        
        // 2. 调用此对象中【 准备】(打开)方法
        //        参数1: 请求数据的方式 GET / POST , put 等
        //        参数2: 请求数据的地址
        //        参数3: false 是同步的方式, true 就是异步
        xhr.open("GET", "http://localhost:8080/ajax/ajaxtest", false);
        
        // 3. 发送
        xhr.send();
        
        // 4. 获取数据
        console.log(  xhr.responseText );

Post请求:

// 请求地址
var url = "http://localhost:8080/ajax/football"; 

var xhr = new XMLHttpRequest();

// 第1个参数 POST, 如果采用post方式,就会自动忽略 地址字符串后面的信息
xhr.open("POST", url, true)

//POST请求和Web表单提交不同,需要使用 XHR 来模仿表单提交
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//  传递参数,数据是放在 send 方法中传递的
xhr.send("pageNo=1");

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var str = xhr.responseText;
    }
}

在请求的过程中,需要监听readyState的变化,它的变化代表着请求响应的变化。

// 1. 创建对象
    var xhr = new XMLHttpRequest();
    
    // 2. 调用此对象中【 准备】(打开)方法
    //        参数1: 请求数据的方式 GET / POST , put 等
    //        参数2: 请求数据的地址
    //        参数3: false 是同步的方式, true 就是异步
    
    xhr.open("GET", "http://localhost:8080/ajax/ajaxtest", false);
    
    // 3. 发送
    //xhr.send();
    // 如果采用同步方式,那么send会等数据回来之后,才执行后面的代码
    //                  readyState==4
    
    // 异步的定义:
    //       请求数据 和 页面的执行 是互不干扰的
    //    问题: 我怎么知道数据回来了?
    //     利用回调函数
    //     onreadystatechange   在 准备状态 发生改变时
    //           状态改变时,会自动调用这个函数
    xhr.onreadystatechange = function() {
        
        // xhr.readyState 准备状态
        //      0       还没有发送请求
        //      1       已经发送请求,服务器还没收到
        //      2   服务器已经收到请求,还没有处理
        //      3   服务器已经处理好,并发送给客户端
        //      4   客户端已经收到数据
        // console.log( xhr.readyState )
        
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log( "2" );
            // console.log( xhr.responseText );
        }
    }
    
    xhr.send();
    
    // 1, 2
    //   因为异步执行,所以不影响 主程序的运行,同时 网络传输是比较慢的,
    //      所以数据是需要隔一段时间才过来,所以先执行1,再执行2
    console.log("1");
    
    // 4. 获取数据
    // console.log(  xhr.responseText );
}   

三、 JSON数据格式 JSON,JavaScript对象表示法(JavaScriptObjectNotation)

JSON和XML比较
1、JSON 长度和XML比起来很短小
2、JSON的读写速度更快,数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
3、JSON可以直接用JavaScript内建的方法进行解析,转化成JavaScript对象。
4、JSON解析:eval和JSON.parse

eval
var jsonObi = eval('(' + jsonData + )');
JSON.parse
var jsonObj = JSON.parse(jsonData);

四、ajax跨域

JavaScript出于同源策略的限制,不可以跨域。

跨域的解决方法:
1.代理
后端处理
2.其他方式的跨域
img 可以跨域
css 文件也可以跨域
script 也可以跨域

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:Ajax

      本文链接:https://www.haomeiwen.com/subject/cmaiuxtx.html