• Ajax


                              Ajax
    Ajax 是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。
    Ajax = 异步 JavaScript + XML。
    Ajax 是一种用于创建快速动态网页的技术。
    通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。


         Ajax 用于创造动态性更强的应用程序
         Ajax 可用来与数据库进行动态通信
         Ajax 可用来与 XML 文件进行交互通信
         创建 XMLHttpRequest 对象
         XMLHttpRequest 是 Ajax 的基础。
         XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    语法:variable = new XMLHttpRequest();

    为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject。

    var xmlhttp;
    if( window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
    } else {
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft XMLHttp");
    }
    Ajax——向服务器发送请求
    如需将请求发送至服务器,使用 XMLHttpRequest 对象的 open()和send()方法:

    xmlhttp.open("GET", "test1.txt", true);
    xmlhttp.send();


    open(method, url, async):规定请求的类型,URL 以及是否异步处理请求。

    method:请求的类型;GET 或 POST
    url:文件在服务器上的位置
    (该文件可以是任何类型的文件,比如 .txt 和 .xml;或者服务器脚本文件,比如 .asp 和 .php(在传回响应之前,能够在服务器上执行任务))
    async:true(异步)或 false(同步)
    send(string) :将请求发送到服务器

    string:仅用于 POST 请求
    GET 还是 POST?
    与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

    在以下情况中,请使用 POST 请求:

    无法使用缓存文件(更新服务器上的文件或数据库)
    向服务器发送大量数据(POST 没有数据量限制)
    发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
    为了得到的是缓存的结果,请向 URL 添加一个唯一的 ID。
    如果希望通过 GET 方法发送消息,请向 URL 添加信息。

    如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader()来添加 HTTP 头。然后在 send()方法中规定你希望发送的数据。

    xmlhttp.open("post", "ajax-test.asp", true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send("fname = Bill & lname = Gates");

    setRequestHeader(header, value):向请求添加 HTTP 头。

    header:规定头的名称
    value:规定头的值
    异步—— True or false?
    通过 Ajax,JavaScript 无需等待服务器的响应,而是:

    在等待服务器响应时执行其他脚本
    当响应就绪后对响应进行处理
    JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或者缓慢,应用程序会挂起或停止。
    当使用 async = false 时,请不要编写onreadystatechange函数——把代码放到send()语句后面即可。

    用 JavaScript 写一个完整的 Ajax 代码并不复杂,但是需要注意:Ajax请求是异步执行的。

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

    如果来自服务器的响应并非 XML -> 使用 responseText 属性
    responseText 属性返回字符串形式的响应
    responseXML:获得 XML 形式的响应数据

    如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析 -> 使用 responseXML 属性。
    Ajax—— onreadystatechange 事件
    当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息。

    XMLHttpRequest 对象的三个属性:

    onreadystatechange:存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
    readyState:存有 XMLHttpRequest 的状态。从0 到 4发生变化
    0:请求未初始化
    1:服务器连接已建立
    2:请求已接收
    3:请求处理中
    4:请求已完成,且响应已就绪
    status:200:“OK”;404:未找到页面
    在 onreadystatechange 事件中,规定当服务器响应已做好被处理的准备时所执行的任务。

    当 readyState 等于4且状态为200时,表示响应已就绪。
    onreadystatechange 事件被触发5次(0~4),对应着 readyState 的每个变化。

    使用 callback 函数
    callback 函数是一种以参数形式传递给另一个函数的函数。
    如果你的网站上存在多个 Ajax 任务,那么你应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 Ajax 任务调用该函数。
    该函数调用应包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同)。

    function myFunction() {
    loadXMLDoc("ajax-info.txt", function() {
    if (xmlhttp.readyState == 4 & xmlhttp.status == 200) {
    document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
    });
    }

    JQuery Ajax - ajax()方法
    实例
    $(document).ready(function() {
    $("#b01").click( function() {
    htmlobj = $.ajax({ url:" /jquery/test1.txt", async: false});
    $("#myDiv").html(html(htmlobj.responseText);
    });
    });
    <div id="myDiv"><h2>Let AJAX change this text</h2></div>
    <button id="b01" type="button">Change Context</button>
    定义和用法
    ajax() 方法通过 HTTP 请求加载远程数据。
    该方法是 jQuery 底层 Ajax 实现。简单易用的高层实现见 $.get,$.post等。

    $.ajax()返回其创建 的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

    最简单的情况下,$.ajax()可以不带任何参数直接使用。

  • 相关阅读:
    复杂对象类型的WebService高级部分
    linux 免输入密码脚本
    查看端口是否被占用
    shell将脚本输出结果记录到日志文件
    多线程注意点
    apache Tomcat配置SSL(https)步骤
    常用的web安全处理
    SQL 中的 UNION 和UNION ALL 的区别
    数据库和数据仓库区别
    Oracle数据库创建表是有两个约束带有默认索引
  • 原文地址:https://www.cnblogs.com/BeotAt/p/12189438.html
Copyright © 2020-2023  润新知