zoukankan      html  css  js  c++  java
  • ajax

    Ajax

    Asynchronous JavaScript and XML

     

    1:ajax是什么?

    :标准的XHTML+CSS

    动态的DOM操作

    XML进行数据的传输和交换

    XMLHttpRequest对象异步交换数据

    javascript把上述概念绑定.

     

    2: ajax的几种名称

    Ajax

    无刷新技术

    局部刷新技术

    异步刷新技术

     

    无刷新技术:

    调用ajax程序的页面,从地址栏上看,没有变化,没有刷新,因此,无刷新技术

     

    局部刷新技术:

    调用ajax程序的页面,可能通过响应内容,动态的改变部分DOM节点

     

    异步刷新技术:

    Js会阻塞后面的js代码执行和html代码的渲染.

    而用异步传输数据,不会阻塞后面js代码执行和html代码的渲染.

     

    同步:就像打电话,电话不挂,人也不干其他的,等到挂电话后才能干其他的.

    异步就像发短信,发完短信后,可以干其他的事情,同时等着短信回来.

     

    3:XMLHttpRequest详细属性

    responseText: 服务器响应的主体信息,body信息

    responseXML: 对于大量的格式化文档,可以用XML来传输或交换,由后台程序把数据封装在XML文档时, js接收XML对象并解析该内容.

    status: 是服务器的返回状态码,:200,成功, 403 forbidden 禁止, 404 not found未找到

    50X系列,内部服务器错误

    statusText: 服务器返回的状态码,对应的文字描述

    readyState: XMLHttpRequest对象自身的状态码,0,4   [0,1,4], [2,3,4]

    onreadystatechange : 事件属性,绑定当XMLHttpRequest对象的状态发生变化的时候,激发的函数

     

    4:XMLHttpRequest详细方法

    open('请求方式',url, 同步/异步); false->同步, true->异步

    send(null/参数), 参数的写法:k1=v1&k2=v2&kn=vn.....

    setRequestHeader(key,value); 设置请求的头信息

    Abort: 忽略,不要再进行下去了,到此为止

    getResponseHeader: 获取响应的某个头信息

    getAllResponseHeaders: 获取响应的所有头信息

     

     

     

    XMLHttpquest对象在各浏览器中的兼容

     

     

    先考虑标准情况,在高版本IE,也可以用XMLHttpRequest对象来创建.
    Ajax返回值

    字符串

      短字符串:

        应用场景一般返回较短,具有标志的字符串,,0/1, succ/fail, 已注册,未注册等.

      Json格式字符串:

    应用场景返回数组或对象等格式化数据

     javascript object notation, javascript原生对象格式

      Html代码: 一整段html代码

         应用场景当页面上有大块的数据变化时用数组要牵涉到大量的DOM操作,

         这时,可以用PHP+Html,预先生成需要的html代码然后以字符串形式返回.

         再innerHTML到页面中去.

      Jsonp: 

    XML

    应用场景:返回大量的格式化数据时

    如果返回XML来使用

    需要1: 服务器端的返回明确指定返回类型XML

    2:在客户端用 responseXML


    Json的意义:

     

    Json 出现的场景:

    PHP有数组 $arr = array(1,2,3);

    C语言中,也有数组, arr = [1,2,3];

    js也有数组, arr = [1,2,3]

     

     

    PHP有数组, java有数组, C语句也有数组, javascript里也有数组,

    各语言数组的定义也不一样,

    如何把不同语言之间的数组让其他语言能够认识?

     

    如何解决把各语言的数组转成大家都支持的一种格式,各语言就可以通信了.

     

     

     

    Json就是一种轻量级的,通用的数组/对象转换格式.

     

    PHP中如何应用json格式

    PHP,可以对对象/数组  应用 json_encode把对象/数组编成 json格式的字符串

    也可以用json_decodejson格式的字符串转成 对象/数组

     

    javascript,如果把json格式的字符串转成数组或对象?

    把该字符串表达式执行一下.

    json格式的字符串,()包起来,eval执行一下.

    Eval(); // eval

     

     

    Ajax的跨域传值

    出于安全性考虑, XMLHttpRequest只允许访问相同域下的地址.

     

    解决:iframe 

    用同域代理来解决

    Jsonp: 

    参考地址:http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=查询词&callback=回调函数名
    不用XMLHttpRequest对象,如何达到ajax的效果,比如投票效果

    史前时代的ajax

    通过动态的创建DOM对象,DOM引用后台的程序文件,来达到请求服务器的目的,

    比如,动态创建img对象,并设置对象.src 属性值为 后台的.php文件.

    这样,当创建图片时,后台的PHP文件就会被请求

     

    Jsonp原理:

    动态的追加其他域下的js文件,

    其他文件文件下返回的js文件有其内容

    本利的回调函数,执行其内容.

     

    Jsonp使用注意:

    安全性远程给你一段js代码,安全性是未知的,要小心使用.

     

     

    Ajax上传文件能实现吗?

    XMLHttpRequest发送表单信息和硬盘上的文件内容. (比如一张图片的二进制信息)

     

    表单信息,可以通过js操作DOM, 读取表单项的值,

    硬盘的文件的内容也需要读取出来,一起发送到服务器.

    Js能否读取硬盘文件呢?  不能. (html5里加了少量权限)

    因为也无法ajax上传文件?

     

     

  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/suihui/p/3238039.html
Copyright © 2011-2022 走看看