异步交互基础XMLHttpRequest对象
来源:互联网 发布:mac office无法更新 编辑:程序博客网 时间:2024/06/14 06:05
最近做百度地图开发,又接触了一把原生的ajax,因为之前写ajax一直使用的是Jquery封装好的ajax对象,先说一下原生的ajax吧。
ajax:异步的javascript和xml,它不是一门语言,而是一种在不刷新当前网页的情况下更新网页数据的一种新标准,它的核心是XMLHttpRequest对象,教程可以参考W3C的教程里面有详细的参数说明http://www.w3school.com.cn/ajax/ajax_intro.asp;
结合看到的一道面试题说一下其中的原理。题目如下:
XMLHttpRequest–这是什么,怎么完整的执行一次POST请求,怎样检测错误?
XMLHttpRequest对象用于与后台数据的交互(在不刷新当前网页的情况下)
一次完整的执行POST请求,首先需要判断浏览器是否支持XMLHttpRequest对象,在IE低版本的浏览器下可能不支持,判断的代码如下所示。
if(window.XMLHttpRequest){ var xmlhttp=new XMLHttpRequest();}else if(window.ActiveXobject){//判断浏览器是否支持ActiveX控件,IE7之前的版本 var xmlhttp=new ActiveXobject("Microft.XMLHttp");}
设置请求行参数,POST方法,url,是否异步,设置完成后发送请求。注册回掉函数,判断交互是否完成,是否返回正确的数据,代码如下:(对于GET请求可以不设置发送参数)
if(xmlhttp!=null){ xmlhttp.open('post','/gpsobj/savePolygon',true);//设置请求行参数 xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");//设置内容类型,常用到的几种类型将在下面说明 xmlhttp.send(pointArrs);//发送请求及请求体内容 xmlhttp.onreadystatechange=function(){//注册回掉函数 if(xmlhttp.readyState==4){//交互已经完成 if (xmlhttp.status==200) {//是否正确请求到内容,200表示请求成功 // console.log("1"); } } }}
到这里一次完整的POST请求已经完成,下面我要说的是在项目开发中我需要设置的内容类型,也就是content-type,http中的content-type经常用到的三种类型,,application/json,text/plain;
- application/x-www-form-urlencoded:表单默认的提交数据的格式,数据被编码为key/value格式发送到服务器.在项目中我需要以这种方式,将多边形的坐标发送到远程服务器解析(没用application/json方式发送是考虑到方便将值保存到数据库,但是也可以用json格式发送,在服务器存数据库的时候再将json格式的值转换为字符串)。完整的代码如下所示。
- application/json:数据以JSON对象的方式发送
- text/plain:数据以纯文本的方式发送,这是内容的默认发送方式。
//获取多边形点数组,提交到服务器getPoint:function(polygon){ var path=polygon.getPath(); var pointArr=[]; for(var i=0;i<path.length;i++){ // console.log('第'+i+'个点的坐标为('+path[i].lng+','+path[i].lat+')'); var point='{"lng":'+path[i].lng+','+'"lat":'+path[i].lat+'}'; pointArr.push(point); } var pointArrs='points=['+pointArr+']'; if(xmlhttp!=null){ xmlhttp.open('post','/gpsobj/savePolygon',true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); xmlhttp.send(pointArrs); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4){ if (xmlhttp.status==200) { // console.log("1"); } } } }},
0 0
- 异步交互基础XMLHttpRequest对象
- XMLHttpRequest 对象实现异步交互
- XMLHTTPRequest对象进行AJAX的异步数据交互
- 运用Ajax的xmlHttpRequest对象异步与后台交互并提示交互结果
- 利用dom方式进行异步传输,XMLHttpRequest对象的创建,数据的异步交互
- Ajax学习(一),获得XMLHttpRequest对象,进行初步异步交互(jquery.javascript)
- Ajax基础(XMLHttpRequest对象)回顾
- XMLHttpRequest 对象--AJAX的基础
- XMLHttpRequest 对象--AJAX的基础 .
- ajax的基础:XMLHttpRequest对象
- 利用XMLHttpRequest对象异步发送XML文档
- Ajax-异步对象连接服务器-XMLHttpRequest
- XMLHttpRequest 对象异步调用web服务
- XMLHttpRequest对象_Ajax异步请求重点
- XMLHttpRequest与django作为服务端的异步交互
- 用XMLHTTPRequest来进行ajax异步数据交交互
- XMLHttpRequest对象和DOM对象基础
- jQuery的ajax()检验用户名;通过jQuery的load()/get()/post()方法实现;使用XMLHTTPRequest对象来进行AJAX的异步数据交互
- Redis集群的搭建
- compass驱动iic的ACKERR问题
- 提取pdf文件中文字的两种方法
- CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
- Shader 入门(一)
- 异步交互基础XMLHttpRequest对象
- java 代码生成器
- jFreeChart案例
- 回归一线应用运维的底线——先做好最基本的事
- ajax中error函数和函数中各个参数的用法
- 二叉树的层次遍历-LintCode
- java length属性 length()方法 size()方法
- How Many Answers Are Wrong(并查集)
- 单链表