• AJAX学习


    AJAX无需在加载真个页面的情况下,更新部分网页的内容,基于Internet标准的,不是一项新技术,快速创建动态网页的技术。
    AJAX=异步JavaScripts + XML
    AJAX工作原理
    浏览器:创建XMLHttpRequest对象;发送HttpRequest请求-----》服务器:处理HttpRequest请求;创建一个response并发送数据给浏览器-----》
    浏览器:使用JavaScripts处理发送的数据;更新网页内容

    相关的技术:
    XMLHttpRequest对象(异步与服务器交换数据)
    JavaScripts/DOM(信息显示/交互)
    CSS(给数据定义样式)
    XML(作为转换数据的格式)

    AJAX应用程序与浏览器和平台无关

    xmlhttp.readyState的值及解释:
    0:请求未初始化(还没有调用 open())。
    1:请求已经建立,但是还没有发送(还没有调用 send())。
    2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
    3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
    4:响应已完成;您可以获取并使用服务器的响应了。
    xmlhttp.status的值及解释:
    100——客户必须继续发出请求
    101——客户要求服务器根据请求转换HTTP协议版本
    200——交易成功
    201——提示知道新文件的URL
    202——接受和处理、但处理未完成
    203——返回信息不确定或不完整
    204——请求收到,但返回信息为空
    205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
    206——服务器已经完成了部分用户的GET请求
    300——请求的资源可在多处得到
    301——删除请求数据
    302——在其他地址发现了请求数据
    303——建议客户访问其他URL或访问方式
    304——客户端已经执行了GET,但文件未变化
    305——请求的资源必须从服务器指定的地址得到
    306——前一版本HTTP中使用的代码,现行版本中不再使用
    307——申明请求的资源临时性删除
    400——错误请求,如语法错误
    401——请求授权失败
    402——保留有效ChargeTo头响应
    403——请求不允许
    404——没有发现文件、查询或URl
    405——用户在Request-Line字段定义的方法不允许
    406——根据用户发送的Accept拖,请求资源不可访问
    407——类似401,用户必须首先在代理服务器上得到授权
    408——客户端没有在用户指定的饿时间内完成请求
    409——对当前资源状态,请求不能完成
    410——服务器上不再有此资源且无进一步的参考地址
    411——服务器拒绝用户定义的Content-Length属性请求
    412——一个或多个请求头字段在当前请求中错误
    413——请求的资源大于服务器允许的大小
    414——请求的资源URL长于服务器允许的长度
    415——请求资源不支持请求项目格式
    416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
    417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求

    合起来
    500——服务器产生内部错误
    501——服务器不支持请求的函数
    502——服务器暂时不可用,有时是为了防止发生系统过载
    503——服务器过载或暂停维修
    504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
    505——服务器不支持或拒绝支请求头中指定的HTTP版本
    1xx:信息响应类,表示接收到请求并且继续处理
    2xx:处理成功响应类,表示动作被成功接收、理解和接受
    3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
    4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
    5xx:服务端错误,服务器不能正确执行一个正确的请求
    xmlhttp.readyState==4 && xmlhttp.status==200

    XMLHttpRequest.open()
    初始化 HTTP 请求参数

    语法
    open(method, url, async, username, password)

    method 参数是用于请求的 HTTP 方法。值包括 GET、POST 和 HEAD。
    ( 大小写不敏感。
    POST:用"POST"方式发送数据,可以大到4MB
    GET:用"GET"方式发送数据,只能256KB
    如果请求带有参数的化实用POST方式,POST方式将参数放置在页面的隐藏控件内
    没有参数使用GET方式
    对于请求的页面在中途可能发生更改的,也最好用POST方式
    )

    url 参数是请求的主体。大多数浏览器实施了一个同源安全策略,并且要求这个 URL 与包含脚本的文本具有相同的主机名和端口。

    async 参数指示请求使用应该异步地执行。如果这个参数是 false,请求是同步的,后续对 send() 的调用将阻塞,直到响应完全接收。
    如果这个参数是 true 或省略,请求是异步的,且通常需要一个 onreadystatechange 事件句柄。

    username 和 password 参数是可选的,为 url 所需的授权提供认证资格。如果指定了,它们会覆盖 url 自己指定的任何资格。

    网页代码

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <form action="/add/" method="get">
     9         a:<input type="text" name="a" id="a" placeholder="请输入数字"><br>
    10         b:<input type="text" name="b" id="b" placeholder="请输入数字"><br>
    11         <p>result:<span id="result"></span></p>
    12         <button type="button" id="sum">Calc</button>
    13     </form>
    14     <br/>
    15     <div id="list">ajax加载列表</div>
    16     <p id="list_result"></p>
    17 
    18     <div id="dict">ajax加载字典</div>
    19     <p id="dict_result"></p>
    20 
    21     <div id="modify"><h2>AJAX点击按钮修改文本内容</h2></div>
    22     <button type="button" onclick="loadXMLDoc()">点击</button>
    23 
    24 
    25     <script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script>
    26     <script>
    27         $(document).ready(function () {
    28             // a+b
    29            $("#sum").click(function () {
    30                var a = $('#a').val();
    31                var b = $('#b').val();
    32 
    33                $.get({% url 'calc_add' %}, {'a':a, 'b':b}, function (ret) {
    34                    $("#result").html(ret)
    35                })
    36            });
    37 
    38            // list
    39             $("#list").click(function () {
    40                 $.getJSON({% url 'name_list' %}, function (ret) {
    41                     // ret返回值是一个列表
    42                     for (var i=0; i<ret.length; i++){
    43                         // 存储到list_result中
    44                         $("#list_result").append(' '+ ret[i])
    45                     }
    46                 })
    47             });
    48             
    49             //dict
    50             $("#dict").click(function () {
    51                 $.getJSON({% url 'name_dict' %}, function (ret) {
    52                     // ret是一个字典
    53 {#                    $("#dict_result").append(ret['b']+ '<br>')#}
    54                     $.each(ret, function (key, value) {
    55                         //key为字典的,value为字典的值
    56                         $("#dict_result").append(value)
    57                     })
    58                 })
    59             })
    60         });
    61 
    62         function loadXMLDoc() {
    63             var xmlhttp
    64             if(window.XMLHttpRequest){
    65                 //建立xmlhttp对象,用于火狐、谷歌、
    66                 xmlhttp = new XMLHttpRequest()
    67             }
    68             else {
    69                 // for IE5, IE6
    70                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
    71             }
    72             xmlhttp.open('GET', '/static/file/test.txt', true);
    73             xmlhttp.send();
    74             // 准备状态改变
    75             xmlhttp.onreadystatechange = function () {
    76                 // 乡音成功
    77                 if(xmlhttp.readyState==4 && xmlhttp.status==200){
    78                     // 返回后台处理的数据
    79                     document.getElementById("modify").innerHTML = xmlhttp.responseText
    80                 }
    81             }
    82 
    83         }
    84 
    85     </script>
    86 
    87 
    88 
    89 
    90 </body>
    91 </html>

    向URL中添加信息
    xmlhttp.open('GET', '/add?a=23&b=12', true);
    xmlhttp.send();

    向服务器发送请求
    如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
    xmlhttp.open("GET","ajax_info.txt",true);
    xmlhttp.send();

    AJAX XMLHttpRequest 服务器响应
    如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性
    responseText 获得字符串形式的响应数据。
    responseXML 获得 XML 形式的响应数据。

    onreadystatechange事件
    当请求发送到服务器时,我们需要执行一些基于响应的任务。当readyState发生改变时,就会触发onreadystatechange事件。
    readyState属性存有XMLHttpRequest的状态信息,在onreadystatechange事件中,当服务器响应已经做好被处理准备时所执行的任务

    callback函数,是一种以参数形式传递给另一个函数的函数。
    如果网站上有多个AJAX任务,应该为创建XMLHttpRequest对象编写一个标准的函数,并为每一个AJAX任务调用该函数。
    该函数应该包含URL以及发生onreadystatechange事件执行的任务。

    HTML5声明:<!DOCTYPE html>
    忘记使用结束标签会产生不可预料的结果或错误。
    没有内容的 HTML 元素被称为空元素,使 <br> 在所有浏览器中都是有效的,但使用 <br /> 其实是更长远的保障.
    HTML属性,元素可以设置属性,一般描述于开始标签,总是以名称/值的形式出现,如:name="deng".
    适用于大多数HTML的属性:
    1)class:为html定义一个或多个类名(classname),类名从样式文件引入
    2)id:定义元素的唯一ID
    3)style:规定元素的行内样式,<style> 元素中你需要指定样式文件来渲染HTML文档
    4)title:描述元素的额外信息,展示要表达的完整版本

    <!-- -->注释

    格式化标签
    <strong>,<b>加粗
    <em>,<i>斜体
    <q>块引用
    HTML使用标签 <a>来设置超文本链接。
    超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。
    当您把鼠标指针移动到网页中的某个链接上时,箭头会变为一只小手。
    在标签<a> 中使用了href属性来描述链接的地址。
    默认情况下,链接将以以下形式出现在浏览器中:
    一个未访问过的链接显示为蓝色字体并带有下划线
    访问过的链接显示为紫色并带上下划线
    点击链接时,链接显示为红色并带上下划线

    <meta>标签描述了一些基本元数据,元数据不显示在页面上,但是会被浏览器解析
    METE标签通常用于指定网页的描述,关键词,文件的最后修改时间,作者和其他元数据
    <meta>通常放在<head>区域
    <script>用于加载脚本文件
    CSS用于渲染HTML标签的样式,使用内联样式添加到HTML中,在相关的标签中使用样式属性,样式属性可以包含任何CSS属性
    <p style="color: aquamarine; margin-left: 20px">This is style para</p>
    在style中:现在通常使用font-family(字体),color(颜色),和font-size(字体大小)属性来定义文本样式,而不是使用<font>标签

    一、当单个文件需要特别样式时,就可以使用内部样式表。你可以在<head> 部分通过 <style>标签定义内部样式表:
    <head>
    <style type="text/css">
    body {background-color:yellow;}
    p {color:blue;}
    </style>
    </head>

    <link> 标签定义文档与外部资源的关系。
    <link> 标签最常见的用途是链接样式表。
    注意: link 元素是空元素,它仅包含属性。
    注意: 此元素只能存在于 head 部分,不过它可出现任何次数。

    二、当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。
    <head>
    <link rel="stylesheet" type="text/css" href="mystyle.css">
    </head>

    <td>表示table data,数据单元格的内容
    <li>定义无序列表
    <table cellpadding='2'></table>单元格边距,创建单元格内容与其边框之间的空白。
    <table cellspacing='3'></table>单元格间距,改变单元格之间的距离。

    列表:
    1)有序列表:1.a;2.b;3.c。有序列表始于<ul>标签 ,每个列表项始于<li>

    2)无序列表:无序列表始于<ol>标签,每个列表项始于<li>

    HTML可以通过<div>、<span>将元素组合起来
    大多数HTML元素为块级元素或内联元素
    块级元素(block-level):实例:<h>,<ul>,<p>,<table>,大多数块级元素通常以新行开始或结束
    内联元素(inline):在显示时通常不会以新行开始,实例:<a>,<img>,<td>,<b>

    <div>是块级元素,可以用于组合其他HTML的容器,没有特定的含义,浏览器会在其前后显示折行
    如果与CSS一同使用,<div>可对大的内容块设置样式属性

    <span>是内联元素,可用作文本的容器,也没有特定的含义。如果与CSS一同使用,<span>可对部分文本设置样式属性

  • 相关阅读:
    继续聊WPF
    窥探Swift之别具一格的Struct和Class
    窥探Swift之类的继承与类的访问权限
    iOS开发之地图与定位
    iOS开发之WebView
    iOS开发之版本控制(SVN)
    iOS开发之抽屉效果实现
    iOS开发之调用系统打电话发短信接口以及程序内发短信
    转:GitHub 万星推荐成长技术清单
    vmware漏洞之四:简评USE-AFTER-SILENCE: EXPLOITING A QUIETLY PATCHED UAF IN VMWARE
  • 原文地址:https://www.cnblogs.com/demo-deng/p/7850242.html
Copyright © 2020-2023  润新知