json ajax

json数据格式
  • json文件
    • 是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种字符串数据格式,目前这种数据格式比较流行,逐渐替换掉了传统的xml(用标签标示的文件格式)数据格式,用这种形式的字符串在前端和后台进行传递。
  • json文件:
    • 文件内容都为json格式的数据内容
  • json的数据格式:
  • 对json数据的操作
    • JSON.parse(str02)
      • str2为json格式的数据,返回值为一个内容为json数据的js对象;
    • JSON.stringify(obj02)
      • obj02为js对象,返回值为一个json格式的数据对象,其中不包含对象中的方法
  • 注意:
    • json数据格式相当于js的类对象的格式,但是样将属性名用双引号包起来,然后在大括号的外边也要加上单引号;
    • json文件为类似于js对象的字符串,如果属性包含多个值,可以用数组来存储;
    • 在json文件中如果有多个json格式的数据,可以用数组来存储
ajax的应用
  • 同步和异步的概念
    • 现实生活中,同步指的是同时做几件事情,异步指的是做完一件事后再做另外一件事,程序中的同步和异步是把现实生活中的概念对调,也就是程序中的异步指的是现实生活中的同步,程序中的同步指的是现实生活中的异步。
  • ajax的介绍
    • ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信。ajax通信的过程不会影响后续javascript的执行,从而实现异步。
  • ajax实现的局部刷新和无刷新
    • 现实生活中,同步指的是同时做几件事情,异步指的是做完一件事后再做另外一件事,程序中的同步和异步是把现实生活中的概念对调,也就是程序中的异步指的是现实生活中的同步,程序中的同步指的是现实生活中的异步。
  • ajax的同源策略
    • 产生的原因:
      • ajax请求的页面或资源只能是本地服务器上的,不能是其他域的资源,这是在设计ajax时基于安全的考虑,叫做跨域问题(端口、协议(一定要是http/https协议)、域名、有一个与文档所在的服务器不同)。
    • 解决措施jsonp:
      • ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可以跨域请求数据,它的原理主要是利用了<script src=“”>标签可以跨域链接资源的特性。jsonp和ajax原理完全不一样,不过jquery将它们封装成同一个函数。
      • jsonp  和ajax请求数据的原理不相同
        • ajax:ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信。
        • jsonp:利用了<script src=“”>标签可以跨域链接资源的特性
  • $.ajax常使用的参数和方法
    • 常用参数:
      • 1、url 请求地址  (如果没解决跨域问题只能请求本地路径)
      • 2、type 请求方式,默认是'GET',常用的还有'POST'
      • 3、dataType 设置返回的数据格式,常用的是'json'格式,也可以设置为'xml'    如果将接受类型设置为json接手到的接收数据会默认变为js对象;
        • 解决跨域问题:使用jsonp格式可以解决跨域问题;
      • 4、data 设置发送给服务器的数据,例如:{name:"xiaoming"};  (jquery会将ajax请求的js对象自动转化成json数据格式)
      • 5、success 设置请求成功后的回调函数
        • 如果将接受类型设置为json,接收到的接收数据jquery会将其变为js对象,会将对象传递给回调函数;
      • 6、error 设置请求失败后的回调函数
      • 7、async 设置是否异步,默认值是'true',表示异步
      • 8、jsonpCAllback   设置跨域请供求的服务器的回调函数(跨域访问的时候一定要设置,用来设置jsonp回调函数);
        • 如果没有设置回调函数,jquery会自动生成一个回调函数传递给服务器,回调函数的参数名默认为callBack;
        • 当访问百度服务器的时候需要注意,百度的ajax在访问数据的时候,会修改回调函数参数的默认名为:cb‘’,修改回调函数参数名称的方法为:     jsonp: "cb";
    • 第一种写法(以键值对的方式):
      • 使用场景
        • 当ajax参数较多,或者是跨域访问的时候使用该种写法
    • 第二种写法(以键值对的方式):
      • 使用场景
        • 当ajax参数较多,或者是跨域访问的时候使用该种写法
    • 第三种写法:
      • 使用场景
        • 当ajax的参数较少,且不需要跨域的时候,使用该种简单的写法
          • 这种写法不能设置error回调函数
          • 其他的方法还有$.get()  $.post()  $.getjsonp()
          • 格式:$.get(url,data,success(response,status,xhr),dataType)
          • url必须传入
  • 以百度服务器为例,设置对其ajax访问的url地址进行数据的访问;
    • 分析百度搜索框的ajax访问的ur
      • https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?        问号前为url
      • // wd=nihao             传给服务器的数据
      • // &json=1
      • // &p=3&sid=1466_21085_20928&req=2&csor=5&pwd=%20&
      • // cb=jQuery110205853343902314352_1508126765486&_=1508126765490          服务器的回调函数(百度已经将callback参数名重新设置)
    • 设置对百度服务器的ajax数据访问
      • 实例:
  • ajax使用时候注意事项
    • 当在事件中设置了ajax跨域请求的时候,如果将回调函数设置在全局变量中,当服务器返回执行回调函数的响应的时候,ajax不能找到对应的全局回调函数,所以当在事件中设置回调函数的时候,尽量应用sucess  和 error 封装好的回调函数;
    • 在服务器端将数据传输给客户端的时候,一定要将要传送的数据封装成字典的格式,不然浏览器会报错,通过jsonresponse可以将传递的字典形式的数据,转化为json格式的数据;
    • 在ajax端将数据构造成类的形式,ajax会将收据构造成json的格式,通过浏览器发送给服务器

刘小恺(Kyle) wechat
如有疑问可联系博主