前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >原生——ajax

原生——ajax

作者头像
FinGet
发布于 2019-06-28 05:49:19
发布于 2019-06-28 05:49:19
2K00
代码可运行
举报
文章被收录于专栏:FinGet前端之路FinGet前端之路
运行总次数:0
代码可运行

什么是Ajax?(前后端数据交互) Asynchronous JavaScript and XML(异步JavaScript和XML)

a.节省用户操作时间,提高用户体验,减少数据请求 b.传输、获取数据 ajax流程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oBtn.onclick=function(){
  //第一步    ‘打开浏览器’    创建ajax对象
  /*
    var xmlhttp;
    第一种方式
    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari//ie6下不存在XMLHttpRequest,所以不能用XMLHttpRequest作判断条件  应该判断window下有没有XMLHttpRequest属性,如果没有只会返回undefined,不会报错
         xmlhttp=new XMLHttpRequest();
    }else{// code for IE6, IE5
             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
    第二种方式
    try{
        xmlhttp=new XMLHttpRequest();
    }catch(e){
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
* */
   var xhr=new XMLHttpRequest();

   //第二步    ‘在地址栏输入地址’
   /**
   open()
   参数
     1.打开方式
     2.地址
     3.是否异步
         异步:非阻塞
         同步:阻塞
   * */
   xhr.open('get','1.txt',true);

   //第三步    ‘提交’    发送请求
  xhr.send();
//第四步    ‘等待服务器返回结果’
/** 请求状态监控
  on readystate change事件
  readyState属性:请求状态
     0    (初始化)还没有调用open()方法
     1    (载入)已调用send()方法,正在发送请求
     2    (载入完成)send()方法完成,已收到全部响应内容
     3    (解析)正在解析响应内容
     4    (完成)响应内容解析完成,可以在客户端调用了

    status属性:服务器(请求资源)的状态      http状态码
    返回的内容
        responseText:返回以文本形式存放的内容
        responseXML:返回XML形式的内容
    * readyState:ajax工作状态
    responseText:ajax请求返回的内容就被存放到这个属性下面
    * */
    xhr.onreadystatechange=function(){
         if (xhr.readyState==4) {

             //容错处理
             if(xhr.status==200){
                   alert(xhr.responseText);
             }else{
                   alert('出错了,Err:'+xhr.status);
            }

       }
    }
}

form表单: action:数据提交地址,默认是当前页面 method:数据提交方式,默认是get方式

1.get 把数据名称和数据值用=连接,如果有多个的话,那么他会把多个数据组合用&进 行连接,然后把数据放到url?后面传到指定页面 url长度限制的原因,我们不要通过get方式传递过多的数据 2.post 理论上无限制 enctype:提交的数据格式 ,默认是:application/x-www-form-unlencoded application/x-www-form-urlencoded 清除ajax缓存: 一、GET 方式请求

如果两次请求的url相同的话 浏览器(不同缓存机制的浏览器会有所不同)会直接将第一次请求的结果给第二次请求

防止这种缓存的方法:

请求的url地址?t=new Date()

二、 POST 方式请求

浏览器认为Post的提交必然是有改变的 所以一般post请求 不会从缓存中去数据

三、 jQuery中的有设置缓存的开关

不管是哪中方式请求 我们可以设置缓存开关:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ajax.Setup({ cache:false);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xhr.open(get,2.get.PHP?username=+ encodeURI(‘刘伟’) +&age=30&+ new Date().getTime(), true); 
 // encodeURL()处理中文乱码问题

get方式提交数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<!--<script src="jquery.js"></script>-->
<script>
//$(function(){})    //阻塞 -> 同步

//非阻塞 - 异步
/*setTimeout(function() {
    alert(1);
}, 2000);

alert(2);*/

window.onload = function() {

    var oBtn = document.getElementById('btn');

    oBtn.onclick = function() {

        var xhr = null;
        try {
            xhr = new XMLHttpRequest();
        } catch (e) {
            xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }
        /*
            1.缓存 在url?后面连接一个随机数,时间戳
            2.乱码 编码encodeURI
        */
        xhr.open('get','2.get.php?username='+encodeURI('刘伟')+'&age=30&' + new Date().getTime(),true);
        xhr.send();

        xhr.onreadystatechange = function() {

            if ( xhr.readyState == 4 ) {
                if ( xhr.status == 200 ) {
                    alert( xhr.responseText );
                } else {
                    alert('出错了,Err:' + xhr.status);
                }
            }

        }

    }
}
</script>
</head>

<body>
    <input type="button" value="按钮" id="btn" />
</body>
</html>

post方式提交数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<!--<script src="jquery.js"></script>-->
<script>
//$(function(){})    //阻塞 -> 同步

//非阻塞 - 异步
/*setTimeout(function() {
    alert(1);
}, 2000);

alert(2);*/

window.onload = function() {

    var oBtn = document.getElementById('btn');

    oBtn.onclick = function() {

        var xhr = null;
        try {
            xhr = new XMLHttpRequest();
        } catch (e) {
            xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }

        xhr.open('post','2.post.php',true);
        //post方式,数据放在send()里面作为参数传递
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明发送的数据类型
        //post没有缓存问题
        //无需编码
        xhr.send('username=刘伟&age=30');

        xhr.onreadystatechange = function() {

            if ( xhr.readyState == 4 ) {
                if ( xhr.status == 200 ) {
                    alert( xhr.responseText );
                } else {
                    alert('出错了,Err:' + xhr.status);
                }
            }

        }

    }
}
</script>
</head>

<body>
    <input type="button" value="按钮" id="btn" />
</body>
</html>

封装ajax.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function ajax(method, url, data, success) {
        var xhr = null;
        try {
                xhr = new XMLHttpRequest();//new一个xhr对象,这个对象像信使一样存在着
        } catch (e) {
                xhr = new ActiveXObject('Microsoft.XMLHTTP');//为了兼容IE6
        }
        //如果是get请求,而且data存在,则是要通过get请求发送数据,通过get请求发送数据,数据会被链接到请求地址之后
        if (method == 'get' && data) {
                url += '?' + data;
        }
        //初始化请求,method表示请求方式,url是请求地址,true表示异步
        xhr.open(method,url,true);
        if (method == 'get') {
                xhr.send();//发送请求
        } else {
                xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//post方式,需要设置请求头
                xhr.send(data);//发送提交数据
        }
        xhr.onreadystatechange = function() {
                if ( xhr.readyState == 4 ) {//4是请求最后的阶段,
                        //http状态码,2开头便是还请求成功
                        if ( xhr.status == 200 ) {
                                success && success(xhr.responseText);//在这里判断一下,如果success存在,则执行它,将响应数据作为参数传入回调函数
                        } else {
                                alert('出错了,Err:' + xhr.status);
                        }
                }
        }
}

jquery $ajax

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jQuery(document).ready(function () {
    $.ajax({
        type: "get", //jquey是不支持post方式跨域的
        async: false,
        url: "http://thinke.cn/yqschool/slide", //跨域请求的URL
        dataType: "jsonp",
        //传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback)
        jsonp: "jsoncallback",
        //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
        jsonpCallback: "success_jsonpCallback",
        //成功获取跨域服务器上的json数据后,会动态执行这个callback函数
        success: function (data) {
            //console.log(json[0].title);
            //console.log(json.length);
            for(var i=0;i<data.length;i++){
                console.log(data[i].title);
                console.log(data[i].date);
                console.log(data[i].link);
            }
        }
    });
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原生JS--Ajax
Ajax基础: --ajax:无刷新数据读取,读取服务器上的信息 --HTTP请求方法:     --GET:用于获取数据,如浏览帖子     --POST:用于上传数据,如用户注册
莫问今朝
2019/02/25
6.3K0
Web前端-Ajax基础技术(上)
ajax是浏览器提供一套的api,用于向服务器发出请求,接受服务端返回的响应,通过javascript调用,实现通过代码控制请求与响应,实现网络编程。
达达前端
2019/07/03
1.5K0
Web前端-Ajax基础技术(上)
JQuery 封装 Ajax Post 请求示例
发送 POST 其实很简单可以在之前发送 GET 请求的基础上进行更改一些内容即可进行发送 POST 请求了:
程序员 NEO
2023/09/22
2920
JQuery 封装 Ajax Post 请求示例
第110天:Ajax原生js封装函数
一、Ajax的实现主要分为四部分: 1、创建Ajax对象 1 // 创建ajax对象 2 var xhr = null; 3 if(window.XMLHttpRequest){ 4 xhr = new XMLHttpRequest(); 5 } else { 6 //为了兼容IE6 7 xhr = new ActiveXObject('Microsoft.XMLHTTP'); 8 } 2、连接服务器 // 连接服务器open(方法GET/POST,请求地址, 异步传输) xhr.o
半指温柔乐
2018/09/11
2.9K0
Ajax 的用法
1、什么是 Ajax?   Ajax,英文名 Asynchronous JavaScript and XML,也就是异步的 JavaScript 和 XML。它不是一门新的语言,而是一种使用现有标准的
IT可乐
2017/12/27
1.3K0
Ajax 的用法
原生AJAX请求教程
ajax 即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用。本质是在 HTTP 协议的基础上以异步的方式与服务器进行通信.
老马
2018/07/31
2.7K0
javascript实现Ajax
文章目录 1. javascript实现Ajax 1.1. 定义 2. 实现的步骤 2.1. 创建XMLHttpRequest 2.2. 打开 2.3. 发送请求 2.4. 接收服务器响应数据 3. 实例 javascript实现Ajax 定义 异步的javascript和XML,实现异步提交功能的技术(XMLHttpRequest) 不响应页面的前提下,服务器可以响应其中的一小部分数据到页面上 实现的步骤 创建XMLHttpRequest 解决浏览器兼容问题 function getXHR(){ v
爱撒谎的男孩
2019/12/31
6260
原生JS实现一个Ajax跨域请求
Asynchronous JavaScript + XML(异步 JavaScript 和 XML), 其本身不是一种新技术,而是一个在 2005 年被 Jesse James Garrett 提出的新术语,用来描述一种使用现有技术集合的‘新’方法。
Dreamy.TZK
2020/09/01
3.3K0
Ajax之路
第一部分: Ajax全称Asynchronous Javascript and XML,中文意思为“异步的Javascript 和XML”。 Ajax这组技术是web2.0的核心之一。   Ajax不是一项技术,它是多种技术组合而成: 运用XHTML和CSS实现基于各种标准的展示。 运用文档对象模型(Document Object Model,DOM)实现动态显示和交互。 运用XML和XSLT实现数据交换和操作 运用XMLHttpRequest(Ajax核心,简称XHR对象)实现异步数据检索 Jav
用户1149564
2018/01/11
1.1K0
Ajax之路
原生态Ajax无刷新评论和顶踩代码(记事本打造,无验证)
<script type="text/javascript"> var xhr=false; var actionType; //todo: var sId=1;   function createXmlHttp() {//创建xhr对象 var xhobj = false; try { xhobj = new ActiveXObject("Msxml2.XMLHTTP"); // ie msxml3.0+
用户1161731
2018/01/11
1.4K0
Ajax
什么是Ajax? Ajax是一种可以与服务器交换数据并更新部分页面内容,同时可以在不让整个网页重新加载的情况下更新网页的一种技术 Ajax请求过程: 1:创建一个异步对象 var xmlHttp = new XMLHttpRequest(); 2:设置请求方式和请求地址 /* 参数顺序,描述 (1)method:请求的类型;GET 或 POST (2)url:文件在服务器上的位置 (3)async:true(异步)或 false(同步) (一般为true,因ajax的精髓就是
jinghong
2020/05/09
5.9K0
初学者必看Ajax的总结
image.png 整理 Ajax 的一些常用的基础知识,挺适合初学的朋友 一、Ajax 简介、优劣势、应用场景以及技术 Ajax 简介 : Asynchronous Javascript And XML (异步的 JavaScript 和 XML) 它并不是一种单一的技术,而是有机利用一系列交互式网页应用相关的技术所形成的结合体 AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更
沈唁
2018/05/24
2.6K0
【通信】前端中的几类数据交互方式
服务器 res.setHeader(‘Access-Control-Allow-Origin’,‘*’);
前端修罗场
2023/10/07
3030
【通信】前端中的几类数据交互方式
AJAX——百闻不如一见
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
泰斗贤若如
2019/06/18
6150
【原生Ajax】全面了解xhr的概念与使用。
xhr是浏览器提供的JavaScript对象,通过它,可以请求服务器上的数据资源,之前所学的jquery的ajax函数,就是基于xhr对象封装出来的。
坚毅的小解同志的前端社区
2022/11/28
2.6K0
【原生Ajax】全面了解xhr的概念与使用。
一个兼容get请求和post请求的Ajax封装函数
今天在看某风网老师录制的 Ajax 函数封装的视频,get 和 post 请求都考虑到了,我在这里也做一下笔记。
德顺
2019/11/12
1.6K0
ajax请求的五个步骤java_如何发送ajax请求?ajax请求的五个步骤详解[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 Ajax是一种可以异步交互数据的技术,目前是前端开发的程序员们最需要的技术之一,那你们知道如何实现ajax吗?它又是怎么实现的呢?跟我一起了解一下吧。 什么是
全栈程序员站长
2022/08/27
2.1K0
两种Ajax写法【ajax】
一、原生 ajax 1、无特殊要求 2、实例代码 //没有用到jquery的Ajax //将xmlHttpResquest对象方法封装起来, var createXhr = function () { var xhr = null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXObject("Microsoft.XMLHtTP"
来杯Sherry
2023/05/25
5370
Ajax与Comet
Ajax(Asynchronous JavaScript + XML的简写)可以向服务器请求数据而无需卸载(刷新)页面,带来更好的用户体验。 Ajax技术的核心是XMLHttpRequest对象(简称XHR)。
奋飛
2019/08/15
6780
这次,我们聊聊ajax的创建过程
ajax:一种客户端向服务器请求数据的方式,不需要去刷新整个页面; ajax的核心:XMLHttpRequest对象
前端林子
2018/08/22
4.2K2
这次,我们聊聊ajax的创建过程
相关推荐
原生JS--Ajax
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文