一、JSON

定义:

            JSON(JavaScript Object Notation, JS对象标记)是一种轻量级的数据交换格式。    
    它基于 ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
    简洁和清晰的层次结构使得JSON称为理想的数据交换语言。易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
 
    json类型:
                数字类型,字符串类型,布尔类型,数组类型,对象类型,null
 

JS中的JSON用法

stringfy和parse方法

JSON.parse();    //用于将一个JSON字符串转换为JavaScript对象

JSON.stringfy();    //用于将JavaScript值转换为JSON字符串

和XML的比较

JSON格式与2001年由Douglas Crockford提出,目的就是取代繁琐笨重的XML格式。
符合JavaScript原声语法,可以又解释器引擎直接处理,不用另外添加解释代码。所以,JSON迅速被接收,已经成为各大网站交换数据个标准格式,并被写入ECMAScript5,成为标准的一部分。
 
XML和JSON都使用结构化方法来标记数据。
用XML表示中国部分省市数据如下:
 <?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name>
<cities>
<city>台北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>乌鲁木齐</city>
</cities>
</province>
</country>
用JSON表示如下:
 {
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
    可以看到,JSON简单的语法格式和清晰的层次结构明显要比XML容易阅读,并且在数据交换方面,由于JSON所使用的字符要比XML少得多,可以大大节约传输数据所占用的带宽。
 

二、Ajax简介

    AJAX(Asynchronous Javascript And XML),异步Javascript和XML。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)
  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求
  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求
AJAX出了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)
 
JS实现的局部刷新:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>

<style>
.error{
color:red
}
</style>
</head>
<body>


<form class="Form">

<p>姓名&nbsp;&nbsp;<input class="v1" type="text" name="username" mark="用户名"></p>
<p>密码&nbsp;&nbsp;<input class="v1" type="text" name="email" mark="邮箱"></p>
<p><input type="submit" value="submit"></p>

</form>

<script src="jquery-3.1.1.js"></script>

<script>
$(".Form :submit").click(function(){
flag = true;
$("Form .v1").each(function(){
var value = $(this).val();
if(value.tirm().length==0{
var mark = $(this).attr("mark");
var $span = $("<span>");
$span.html(mark+"不能为空!");
$span.prpo("class", "error");
$(this).after($span); setTimeout(function(){
$span.remove();
}, 800);
flag = false;
return flag;
}
});
return falg
});
</script>
</body>
</html>

AJAX的优势

  • AJAX使用Javascript技术向服务器发送异步请求
  • AJAX无需刷新整个页面
  • 因为服务器响应内容不再是整个页面,而是页面中的局部,所以AJAX性能高
 

jQuery实现的ajax

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<button class="send_Ajax">send_Ajax</button>

<script>
// $.ajax的两种使用方式:
// 1 $.ajax(settings);
// 2 $.ajax(url, [settings]); $(".send_Ajax").click(function(){
$.ajax({
url: "/handle_Ajax/",
type: "POST",
data: {username:"Lucy", password: 123}, success:function(data){
alert(data)
},
// error
error:function(jqXHR, textStatus, err){
//jqXHR: jQuery增强的xhr
//textStatus: 请求完成状态
//err:底层通过throw抛出的异常对象,值与错误类型有关
console.log(arguments);
},
// complete
complete:function(jqXHR, textStatus){
//jqXHR: jQuery增强的xhr
//textStatus: 请求完成状态 success | error
},
statusCode:{
'403':function(jqXHR, textStatus,err){
console.log(arguments);
},
"400":function(){}
},
})
}
</script>
</body>
</html>
 

$.ajax参数

请求参数
************ data ************
data: 当前ajax请求要携带的数据,是一个json的object对象,ajax方法就会默认把它编码成某种格式(urlencoded:?a=1&b=2)发送给服务端;此外,ajax默认以get方式发送请求。
function testData(){
$.ajax("/test/",{
data:{ // 此时的data是一个json形式的对象
a:1,
b:2
}
}); //?a=1&b=2

************ processData ************
processData:声明当前的data数据是否进行转码或预处理,默认为true,即预处理;如果为false;那么对data:{a:1,b:2}会调用json对象的toString()方法,即{a:1,b:2}.toString(),最后得到一个[object, object]形式的结果。

************ contentType ************
contentType: 默认值:“application/x-www-form-urlencoded".发送信息至服务器时内容编码类型。
用来指明当前请求的数据编码格式;urlencoded:?a=1&b=2;如果想以其他方式提交数据,比如contentType:“application/json",即向服务器发送一个json字符串。
比如contentType:"application/sjon",即向服务器发送一个json字符串:
$.ajax("'ajax_get",{
data: JSON.stringfy({
a:22,
b:33
}),
contentType:"application/json",
type:"POST",
});
注意:contentType:“appliation/json"一旦设定,data必须是json字符串,不能是json对象
************ traditional ************
traditional: 一般是我们的data数据又数组时会用到: data:{a:22, b:33, c:["x", "y"]},
traditional为false会对数据进行深层次迭代。

响应参数

 /*
dataType: 预期服务器返回的数据类型,服务器端返回的数据会根据这个值解析后,传递给回调函数。默认不需要显性指定这个属性,ajax会根据服务器返回的content Type来进行转换;比如我们的服务器响应的content Type为json格式,这时ajax方法就会对响应的内容进行一个json格式的转换,如果转换成功,我们在success的回调函数里就会得到一个json格式的对象,转换失败就会触发error这个回调函数。如果我们明确地指定目标类型,就可以使用data type。
dataType的可用值:html|xml|json|text|script
*/

 
 
 
 
 
 
 

jQuery AJAX基础的更多相关文章

  1. jQuery基础---Ajax基础教程(二)

    jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中, ...

  2. jQuery基础---Ajax基础教程

    jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax ...

  3. jQuery和AJAX基础

    jQuery和AJAX基础 jQuery 基础: 1.jQuery 选择器: 元素选择器:$("p"): #id 选择器:$("#test"): .class ...

  4. jQuery Ajax(异步请求)

    jQuery异步请求 原始的异步请求是需要创建的 XMLHttpRequest 对象.(IE5,6不支持)目前很多浏览器都支持XMLHttpRequest对象 jQuery ajax常用的回调函数:b ...

  5. jQuery官方基础教程笔记(转载)

    本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...

  6. Web前端-Ajax基础技术(下)

    Web前端-Ajax基础技术(下) 你要明白ajax是什么,怎么使用? ajax,web程序是将信息放入公共的服务器,让所有网络用户可以通过浏览器进行访问. 浏览器发送请求,获取服务器的数据: 地址栏 ...

  7. Web前端-Ajax基础技术(上)

    Web前端-Ajax基础技术(上) ajax是浏览器提供一套的api,用于向服务器发出请求,接受服务端返回的响应,通过javascript调用,实现通过代码控制请求与响应,实现网络编程. ajax发送 ...

  8. 原生Ajax--XmlHttpRequest对象和jQuery.ajax()

    Ajax主要就是使用 [XmlHttpRequest]对象来完成请求的操作,该对象在主流浏览器中均存在(除早起的IE) 1.XmlHttpRequest对象介绍 XmlHttpRequest对象的主要 ...

  9. jQuery Ajax -附示例

    jQuery其实就是一个JavaScript的类库,其将复杂的功能做了上层封装,使得开发者可以在其基础上写更少的代码实现更多的功能. jQuery 不是生产者,而是大自然搬运工. jQuery Aja ...

随机推荐

  1. python 抓取数据 存入 excel

    import requestsimport datetimefrom random import choicefrom time import timefrom openpyxl import loa ...

  2. ROS学习笔记(一)

    运行ROS例程(turtlesim)1)安装turtlesim包sudo apt-get install ros-kinetic-turtlesim2)运行管理器节点roscore3)运行turtle ...

  3. PAT 甲级 1144 The Missing Number (20 分)(简单,最后一个测试点没过由于开的数组没必要大于N)

    1144 The Missing Number (20 分)   Given N integers, you are supposed to find the smallest positive in ...

  4. 关于css清除元素浮动的方法总结(overflow clear floatfix)

    在前两天的一个面试中考官问我web中清除浮动的一些css常用方法,我很轻松的答出了: 1.overflow:hidden 2.clear:both 3.floatfix类 然后问题就来了,考官接着问' ...

  5. Nodejs Client for FastDFS

    FastDFS 是分布式文件存储系统.这个项目是FastDFS的NodeJS客户端,用来与FastDFS Server进行交互,进行文件的相关操作.我测试过的server版本是4.0.6. githu ...

  6. C++ 宏和模板简介

    参考<21天学通C++>第14章节,对C++中的宏和模板进行了学习,总结起来其主要内容如下: (1) 预处理器简介 (2) 关键字#define与宏 (3) 模板简介 (4) 如何编写函数 ...

  7. 一次性清除页面上的所有setInterval

    参考链接:https://www.cnblogs.com/liujinyu/p/3668575.html

  8. console.log()和alert()的区别

    一直都是知道console.log()和alert()是有区别的,但是具体有什么区别就不清楚了,后来在权威指南里注意到了说alert()具有侵入性才来查一查两者的具体区别. 查询到的区别: alert ...

  9. PHP实现单点登录最简单的方法

    PHP实现单点登录最简单的方法 用户在A登录 存入登录状态 登录B站(A的识别要传入B) 获取A的登录状态

  10. 《C语言程序设计》课程教学目录

    <C语言程序设计>课程教学目录 不要去精确定义单个论题,应将一整套问题组织成体系.--黎曼(1826-1866)德国著名数学家 教学过程 2018年秋季学期 C语言程序设计I-第一周教学 ...