Ajax和Json

目录

Ajax

同步请求和异步请求

Ajax的对象

Ajax代码编写步骤

XMLHttpRequest对象的属性

Ajax案例

Json

在JavaScript中创建Json对象

 Json语法

字符串与对象相互转换

访问对象值

嵌套Json对象

修改删除值

Json数组

 Json和XML

Json与XML相互转换

 Ajax和Json

 GeoJSON和TopoJSON 

1.GeoJSON

 2.TopoJSON


Asynchronous(异步) Javascript And XML简称AJAX,它不是一种新技术,只是老技术[js]采用新用法[引用了XMLHttpRequest对象]。

Ajax

同步请求和异步请求

同步请求是指当浏览器发出请求后,只有当服务器端完成后响应回来,才能看到响应结果,这个过程中浏览器不能做其他的事情,只能等待服务端的响应。

异步请求是指当浏览器发出请求后,等待服务器的响应在此期间,浏览器不阻塞,你可以去做其他的事情,直到服务端的响应结束。

同步请求,就是整个浏览器的页面都会刷新一次

异步请求,就是局部刷新,它不会整体刷新页面(浏览器开启一个新的线程去发生请求服务端,主线程不受影响,直到这个异步线程从服务端响应回来,然后,主线程就要针对这个回来的响应进行处理  )

Ajax的对象

XMLHttpRequest对象,专门用来发送异步请求的对象,当然,也可以发达同步请求。

Ajax代码编写步骤

1.创建XMLHttpRequest对象

2.注册回调函数

3.建立与服务端的连接

4.发送请求

var xmlhttp;  //创建变量
function ajax_demo() {
//第一步
    if(window.XMLHttpRquest) {
    //IE7+,FF,chrome,opera,safari,.....
        xmlhttp=new XMLHttpRquest();
    }
    else{
    //IE5,IE6,else基本不用了,只需要if里的那一句话就可以了
        xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
    }
//第二步,注册回调函数
    xmlhttp.onreadystatechange=function() {  
    //当readyState改变一次就回调一次,只有当readyState的值变为4的时候,才去处理,其他的    
    情况不管
    //执行你的异步的代码逻辑
    //......自己要写的代码
        if(xmlhttp.readState==4){
            //......
            if(xmlhttp.status==200){
                //表示服务端正常响应客户端
                var str=xmlhttp.responseText;
            //如果服务端传递过来的是json字符串,则我们可以通过如下方式把它解析成JSON对象
                var json=JSON.parse(str);
            }
        }
    }
//第三步,建立连接
    xmlhttp.open("POST|GET","目标URL",true|false);//true表示异步,false表示同步
//第四步,发送请求
    xmlhttp.send(); //如果要传递数据给服务端,把数据作为参数传过去
}

XMLHttpRequest对象的属性

1.readyState属性(此属性0-4,共计5种状态)

        0 表示请求未初始化

        1 服务器连接已经建立

        2 请求已接收

        3 请求处理中

        4 请求已完成,响应已就绪

2.status属性(响应状态码,有5种类型)

        1xx

        2xx 代表服务端正常响应的客户端

        3xx 代表服务端资源没有发送改变

        4xx 表示资源错误

        5xx 表示服务端错误

3.responseText和responseXML

        responseText 表示以文本的信息获取服务端的响应,获取的就是字符串

        responseXML 当服务端以XML格式返回给客户端时,则使用此属性去接收,

                                (获取的就是DOM对象)

Ajax案例

前端

//定义xmlhttp变量
var xmlhttp;
//给username输入框添加onblur事件处理程序
var uname_input=document.querySelector("input[name='username']");
uname_input.onblur=function(){
	//1.初始化,XMLHttpRequest对象
	initXHR();
	//2.注册回调函数
	xmlhttp.onreadystatechange=function(){
		//处理逻辑
		if(xmlhttp.readyState==4 && xmlhttp.status==200){
			//a.获取服务端的响应
			var resp=xmlhttp.responseText;
			//b.判断
			if(resp=="true") {
				//说明这个用户已经存在了
				document.querySelector("#uname-show").innerHTML="用户名已经存在";
				//把光标定位到此元素
				uname_input.focus();
				//选中
				uname_input.selected();
			}else{
				//说明这个用户可以使用
				document.querySelector("#uname-show").innerHTML="用户名合法";
				//修改样式
				document.querySelector("#uname-show").className="text-success";
			}
		}
	}
	//3.建立连接
	xmlhttp.open("GET","ajax/validateName?username="+uname_input.value,true);
	//4.发起请求
	xmlhttp.send();
}

服务端

Json

 

在JavaScript中创建Json对象

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<div>
		姓:<span id="x01"></span><br>
		名:<span id="m01"></span>
	</div>
	<script type="text/javascript">
		var ren={"xing":"马","ming":"群耀"};
		document.getElementById("x01").innerHTML=ren.xing;
		document.getElementById("m01").innerHTML=ren.ming;
	</script>
</body>
</html>

 

 Json语法

Json语法规则(Json语法是JavaScript对象表示语法的子集)

        数据在名称/值对中

        数据由逗号分隔

        花括号保存对象

        方括号保存数组

Json名称/值对

        Json数据格式为:名称/值对,"firstName":"John"

        相当于JavaScript中的:firstName="John"

Json值

Json对象(在花括号里书写,对象可以包含多个名称/值对)

        {"firstName":"John","lastName":"Doe"}

Json数组(在方括号里书写,数组可包含多个对象)

字符串与对象相互转换 

访问对象值

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<div>
		姓:<span id="x01"></span><br>
		名:<span id="m01"></span><br>
		地址:<span id="di"></span>
	</div>
	<div id="demo"></div>
	<script type="text/javascript">
		var ren={"xing":"马","ming":"群耀","dizhi":"泰兰德"};
		// document.getElementById("x01").innerHTML=ren.xing;
		// document.getElementById("m01").innerHTML=ren.ming;
		// document.getElementById("di").innerHTML=ren.dizhi;

		for(i in ren){
			document.getElementById("demo").innerHTML=document.getElementById("demo").innerHTML+ren[i]+"<br>";
		}
	</script>
	</script>
</body>
</html>

嵌套Json对象

 

修改删除值

 

 改前和改后

Json数组

 Json和XML

XML 被设计用来传输和存储数据。HTML 被设计用来显示数据。

Json相比XML的优势是:

        没有结束标签,长度更短,读写更快

        能够直接被JavaScript解释器解析

        可以使用数组

下面写的,两者表达的内容是一致的

Json与XML相互转换

XML转Json

 Json转XML

 

 Ajax和Json

Json文件被放置在服务器端,客户端请求该文件用得最多的就是Ajax,能够实现异步请求。

Ajax能够与服务器交换少量数据,从而异步地更新部分网页。

 GeoJSON和TopoJSON 

 GeoJSON和TopoJSON 是符合JSON语法规则的两种数据格式,用于表示地理信息

1.GeoJSON

GeoJSON 是用于描述地理空间信息的数据格式。GeoJSON不是一种新的格式,其语法规范是符合 JSON格式的,只不过对其名称进行了规范,专门用于表示地理信息

GeoJSON的最外层是一个单独的对象(object)。这个对象可表示:

        -几何体(Geometry)。
        -特征(Feature)。
        -特征集合(FeatureCollection)。

最外层的 GeoJSON 里可能包含有很多子对象,每一个 GeoJSON 对象都有一个 type属性,表示对象的类型,type 的值必须是下面之一。

        -Point:点。
        - MultiPoint:多点。
        - LineString:线。
        -MultiLineString:多线。
        - Polygon:面。
        - MultiPolygon:多面。
        -GeometryCollection:几何体集合。
        - Feature:特征。
        - FeatureCollection:特征集合。

 

 2.TopoJSON

TopoJSON 是 GeoJSON 按拓扑学编码后的扩展形式,是由 D3 的作者 Mike Bostock 制定的。相比 GeoJSON 直接使用 Polygon、Point之类的几何体来表示图形的方法,TopoJSON中的每一个几何体都是通过将共享边(被称为arcs)整合后组成的。

        -TopoJSON 消除了冗余,文件大小缩小了80%,因为:

        -边界线只记录一次(例如广西和广东的交界线只记录一次)。地理坐标使用整数,不

        使用浮点数。

http://geojson.io

http://mapshaper.org

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值