Ajax记录

Ajax简介

  在传统的Web应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的相应。如果前一个请求没有得到相应,则后一个请求就不能发送。由于这是一种独占式的请求,因此如果服务器相应没有结束,用户就只能等待或者不断的刷

    新页面。在等待期间,由于新的页面没有生成,整个浏览器将是一片空白,而用户只能继续等待。对于用户而言,这是一种不连续的体验。同时,频繁的刷新页面也会使服务器的负担加重。

  Ajax(Asynchronous JavaScript and XML)技术就是为了弥补以上的不足而诞生的。Ajax是一种无刷新技术,由JavaScript、XML、CSS等技术整合而成。

  Ajax的执行流程是,用户界面触发时间调用JavaScript,通过Ajax引擎——XMLHttpRequest对象异步发送请求到服务器,服务器返回XML、JSON或HTML等格式的数据,然后利用返回的数据使用DOM和CSS技术局部更新用户界面。

  Ajax的的关键元素包括以下内容:

    1.JavaScript语言:Ajax技术的主要开发语言。

    2.XML/JSON/HTML等:用来封装请求或相应的数据格式。

    3.DOM(文档对象模型):通过DOM属性或方法修改页面元素,实现页面局部刷新。

    4.CSS:改变样式,美化页面效果,提升用户体验度。

    5.Ajax引擎:即XMLHttpRequest对象,以异步方式在客户端与服务器端之间传递数据。

XMLHttpRequest 对象

  XMLHttpRequest 用于在后台与服务器交换数据。所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

  创建 XMLHttpRequest 对象的语法:

    XMLHttpRequest = new XMLHttpRequest();

  老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

    XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

    为了应对所有的现代浏览器,包括 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");
    }

  如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:

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

    xmlhttp.send();

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

  • method:请求的类型;GET 或 POST
  • url:文件在服务器上的位置
  • async:true(异步)或 false(同步)
send(string)
将请求发送到服务器。

  • string:仅用于 POST 请求

  

  GET 请求:

    xmlhttp.open("GET","demo_get.asp",true);

    xmlhttp.send();

    但get请求得到的可能是缓存的结果。

    为了避免这种情况,需要向 URL 添加一个唯一的 ID:

      xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);

      xmlhttp.send();

    通过 GET 方法的URL发送信息:

      xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);

      xmlhttp.send();

  POST 请求:

    xmlhttp.open("POST","demo_post.asp",true);

    xmlhttp.send();

    如果需要像 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");

      其实使用post发送请求的话,servlet中可以用request.getParameter(name)获取值。

  当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息。下面是 XMLHttpRequest 对象的三个重要的属性:

属性 描述
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪
status
200: "OK"

404: 未找到页面

  请求成功后获取相应数据

    xmlhttp.onreadystatechange=function()

    {

      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
       }
    }

jQuery Ajax 操作函数

函数 描述
jQuery.ajax() 执行异步 HTTP (Ajax) 请求。
.ajaxComplete() 当 Ajax 请求完成时注册要调用的处理程序。这是一个 Ajax 事件。
.ajaxError() 当 Ajax 请求完成且出现错误时注册要调用的处理程序。这是一个 Ajax 事件。
.ajaxSend() 在 Ajax 请求发送之前显示一条消息。
jQuery.ajaxSetup() 设置将来的 Ajax 请求的默认值。
.ajaxStart() 当首个 Ajax 请求完成开始时注册要调用的处理程序。这是一个 Ajax 事件。
.ajaxStop() 当所有 Ajax 请求完成时注册要调用的处理程序。这是一个 Ajax 事件。
.ajaxSuccess() 当 Ajax 请求成功完成时显示一条消息。
jQuery.get() 使用 HTTP GET 请求从服务器加载数据。
jQuery.getJSON() 使用 HTTP GET 请求从服务器加载 JSON 编码数据。
jQuery.getScript() 使用 HTTP GET 请求从服务器加载 JavaScript 文件,然后执行该文件。
.load() 从服务器加载数据,然后把返回到 HTML 放入匹配元素。
jQuery.param() 创建数组或对象的序列化表示,适合在 URL 查询字符串或 Ajax 请求中使用。
jQuery.post() 使用 HTTP POST 请求从服务器加载数据。
.serialize() 将表单内容序列化为字符串。
.serializeArray() 序列化表单元素,返回 JSON 数据结构数据。

服务器返回数据

  使用Ajax请求之后,如果请求的数据是复杂数据类型的话,服务器需要将数据包装一下。

  使用FastJSON可以很好的完成这个工作。

时间: 2024-11-13 20:30:00

Ajax记录的相关文章

关于JS中运用AJAX记录

上个月在做进销存软件时,用到许多需要异步获取数据的地方,今天告一段落,特此记录 总体感觉js做出来的比JQUERY,方便了许多(也可能是我用的少),但是兼容方面确实无法和JQUERY相提并论 另外在使用JQUERY过程中发现ASP.NET 做POST请求时,会出现请求失败的问题,但是改为GET之后就可以了,令我相当郁闷,这也是后来我没有选用JQUEY来做一步请求的很大一个原因 //此处我用异步操作处理需要对IOS推送的消息 var http1; //此处用来判断浏览器 if (window.XM

微信商城中使用微信支付接口获取用户地址

授人以鱼不如授人以渔 微信支付获取用户地址 使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能. 微信商城中,使用微信支付获取用户的收货地址,可以省略用户输入地址信息的繁复流程,提高用户体验. 但是可能是因为牵扯到用户隐私,所以在使用过程中,需要用户自己主动选择使用该功能,并且是通过点击的操作,我们才可以获取到用户的收货地址,这一点是要注意的. 操作流程如下: 1.用户打开购物车页面,点击结算,跳转到一个微信的oauth2的页面,地址为:https://open.we

PHP 实现“贴吧神兽”验证码

最早看到 “贴吧神兽” 验证码是在百度贴吧,吧主防止挖坟贴,放出了究极神兽验证码 例如: 地址:http://tieba.baidu.com/p/3320323440 可以用 PHP + JavaScript 实现该种类型的验证码. 使用 jQuery 版本:jQuery 1.9.1 框架使用 ThinkPHP 3.2.3,自定义的验证码类基于 TP 的验证码类 最终效果图: 自定义验证码类路径:/Application/Home/Common/VerivyPostBar.class.php 控

.NET日志工具选型

什么是日志(logging)和跟踪(tracing)? 日志(有时候也称为跟踪)是以为调试和测试为目的被用来记录关于程序执行信息.开发人员.测试人员和支持工程师经常使用日志和跟踪技术识别软件问题,为了进行部署后的调试.监控在线生产系统和审计. 测试通常包括写文本消息到日志文件或将数据发送到监控应用.先进和现代的测试工具也支持复杂的数据结构,记录调用堆栈.线程行为,也支持通过网络或本地计算机上的应用程序进行实时监控. .NET日志和跟踪工具 C# Logger C# Logger是支持发送事件和消

使用Hadoop统计日志数据

用户行为日志概述 用户行为日志: 用户每次访问网站时所有的行为数据 访问.浏览.搜索.点击... 用户行为轨迹.流量日志(用户行为日志的其他名称) 为什么要记录用户访问行为日志: 进行网站页面的访问量的统计 分析网站的黏性 训练推荐系统 用户行为日志生成渠道: web服务器记录的web访问日志 ajax记录的访问日志以及其他相关的日志 用户行为日志大致内容: 访问时间 访问者所使用的客户端(UserAgent) 访问者的IP地址 访问者账号 某个页面的停留时间 访问的时间与地点 跳转的链接地址(

爬虫1 爬虫介绍, requests模块, 代理(正向代理,反向代理), 爬梨视频, 自动登录网站, HTTP协议复习

HTTP协议复习 参考:https://www.cnblogs.com/an-wen/p/11180076.html 1爬虫介绍 # 1 本质:模拟发送http请求(requests)---->解析返回数据(re,bs4,lxml,json)--->入库(redis,mysql,mongodb) # 2 app爬虫:本质一模一样 # 3 为什么python做爬虫最好:包多,爬虫框架:scrapy:性能很高的爬虫框架,爬虫界的django,大而全(爬虫相关的东西都集成了) # 4 百度,谷歌,就

asp.ne中使用ajax和controller进行通信问题记录

为了页面显示和后端处理分离,使用了html+ajax+mvc的形式进行处理. 在这其中遇到的问题记录: 1. 在使用ajax向controller请求数据的时候,"get"方法会缓存上一次的请求,导致controller方法不能被debug跟踪到,开始以为是vs出错了,到后来才搞清楚. 解决方法:请求controller路径时加上随机数,或者使用"post"方法. 2. 在使用"POST"方法时,IE11要小心处理,因为ie会出现怎么都执行不了的

记录一下前端ajax实现增删改功能的步骤

主要依赖三个按钮:新增,删除,编辑 新增:点击时创建新的LI或者TR并append到父级里,此时无需调动后台接口(如果新增需要弹窗输入val则可以调用): 删除:判断this是否有后台传过来的id值,如果没有,则为新增的,可直接删除:如果有,则需要将Id值传给后台,后台删除记录后前端再把Li给remove了: 确定(或者编辑):获取所有的input的val值,判断:如果没有id值,为新增,放到数组1并调用后台add新增接口:如果有id并且val发生改变(需要预先保存原值并进行比较)则放到数组2调

jquery的ajax实现的删除记录代码实例

jquery的ajax实现的删除记录代码实例:下面一段jquery实现的ajax代码实例,能够删除一条记录,并且会给出提示信息,代码如下:代码段一: /* 请求Ajax 带返回值,并弹出提示框提醒---------------------------*/ function getAjax(url,parm,callBack){ $.ajax({ type:'post', dataType:"text", url:url, data:parm, cache:false, async:fa