热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ajax教程(一):ajax介绍与快速入门

Ajax就是利用javascript和xml技术实现与服务器交互并传送数据的一种技术

一.Ajax介绍

静态:指在客户端浏览器解析并运行。如:Html,css,Javascript,Ajax

动态:是指由服务器端解析并运行。如:Asp,Jsp,Php

传统web应用程序工作流程图:

ajax教程

用户操作--->等待------->操作----->等待

Ajax工作原理图:

ajax教程

无刷新

二.什么是ajax

  • Asynchronous :异步
  • Javascript 
  • And 
  • XML 

Ajax就是利用Javascriptxml技术实现与服务器交互并传送数据的一种技术

三.使用ajax

ajax对象:XMLHttpRequest

怎么在各种浏览器里得到这个XMLHttpRequest对象呢?????

1. 不同浏览器创建xmlhttprequest对象的方式

IEnew ActiveXObject("Microsoft.XMLHTTP")

其它:new XMLHttpRequest();

在高版本IE浏览器中,目前也支持第二种方法

//在IE实例化ajax对象的方式
//var xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
//alert(xmlHttp);
//在其它浏览器里实例化ajax对象的方式,在高版本IE也兼容
//var xmlHttp=new XMLHttpRequest();
//alert(xmlHttp);

无论客户端使用哪种浏览器,都可以创建出相应的ajax对象?????2. 问题:如何写程序可以兼容所有的浏览器


function CreateXmlHttp(){
var str=window.navigator.userAgent;
if(str.indexOf('MSIE')<0)
return new XMLHttpRequest();
else
return new ActiveXObject('Microsoft.XMLHTTP');
}

ajax对象的常用方法: 四. ajax对象的相关属性和方法


  • open(method,url)

初始化ajax对象的信息

Methodhttp请求类型(getpost

url:要请求的页面地址

在调用open方法,没用对服务器发送请求,仅仅是表初始化ajax对象的信息

  • setRequestHeader(header,value)

设置http请求头信息

  • send(content)

发送请求 

Content:数据

只有调用send方法时,ajax对象才会真正向服务器页面发送请求

send(null);

Ajax对象的常用属性:

  • onreadystatechange:当ajax对象的状态码发生改变时所触发的回调函数
  • readyState ajax对象的状态码

0:表示对象已建立,但未初始化

1:表示对象已初始化,但未发送

2:已调用send方法进行请求

3:正在接收数据(接收到一部分)

4:接收完成

  • status http响应状态码
  • statusText http响应信息
  • reponseText:服务器返回的数据(文本字符串)
  • responseXML :服务器返回的数据(xml格式的数据)

以上两个属性都表示服务器返回的数据,具体要使用哪个,要看服务器返回数据的类型

如:服务器返回的是xml格式的数据,我们就需要使用responseXML进行接收

如:服务器返回的就是普通的字符串,我们使用responseText进行接收

五.ajax快速入

页面加载之后,会使用ajax对象异步向服务器发一个请求,由服务器返回一个‘hello,ajax的字符串,再由客户端的alert弹出



六.利用ajax发送数据#p#php教程-ajax学习笔记#e#


刚才我们写的程序,没有给服务器传递任何值,只是由服务器返回固定的信息,现在我有这样的需求,我写上一个人名,将人名传给服务器,由服务器连接上hello,人名字符串,并返回,由ajax回调函数接收并弹出

function display(){
var username=document.getElementById('username').value;
var url='demo03.php?username='+username;
xmlHttp=CreateXmlHttp();
xmlHttp.open('get',url);
xmlHttp.Onreadystatechange=callback;
xmlHttp.send(null);
}
function callback(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
alert(xmlHttp.responseText);
} }

例题:利用ajax实现两个的加法以上这题我们发现请求不同的名字的时候,弹出的名字还是一样;原因可能产生缓存,


function display(){
var first=document.getElementById('first').value;
var secOnd=document.getElementById('second').value;
var url='demo04.php?first='+first+'&secOnd='+second;
xmlHttp=CreateXmlHttp();
xmlHttp.open('get',url);
xmlHttp.Onreadystatechange=callback;
xmlHttp.send(null);
}
function callback(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
document.getElementById('num').value=xmlHttp.responseText;
} } 

当我们的ajax对象采用get形式请求服务器页面时,IE浏览器会将这次的结果缓存到本地,下次如果还请求这个url,会直接调出这个缓存文件,解决办法:七.解决缓存问题


  • 方法一:随机数http://localhst/index.php?id=10&m=随机数
  • 方法二:时间http://localhost/index.php?id=10&t=时间戳 
  • setRequestHeader("If-Modified-Since","0");

表示告诉服务器,我有一个相应的缓存文件,这个文件的最后修改时间为0,然后服务器拿到这个消息后会和服务器上的文件的最后修改时间进行比较,如果不同,则返回最新结果(200),如果相同

  • header("Cache-Control: no-cache, must-revalidate");

以上四种方式前三种:其实并不是真正的禁用缓存,而是让每次都缓存一个文件,其中第三种方法,是表示每次都取得最新数据,它们其实都有缓存

第四种方法可以禁止缓存

ajax教程
ajax教程

八.使用post传输数据

http请求类型:getpost

getpost有什么不同?

Get传参时会把数据附加url后面

Post传参时会把数据放到http请求空白行之后

Get一般用于传送普通文本数据

Post可以传递文本数据和文件

Get方式对参数大小有限制1024

Post可以理解为无限制

如何使用ajaxpost请求某个服务器页面???

  • xmlhttp.open("post",action.php");
  • xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  • xmlhttp.send(data);

Tippost请求不缓存

function display(){
var first=document.getElementById('first').value;
var secOnd=document.getElementById('second').value;
var data='first='+first+'&secOnd='+second;
xmlHttp=CreateXmlHttp();
xmlHttp.open('post','demo08.php');
xmlHttp.setRequestHeader(
'Content-Type','application/x-www-form-urlencoded');
xmlHttp.Onreadystatechange=callback;
xmlHttp.send(data);
}
function callback(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
document.getElementById('num').value=xmlHttp.responseText;
} }

注意:Ajax程序的html文件,不要以右键--à浏览器形式来运行,这种方式表示运行的本地系统的普通文件,无法去请求http服务器页

推荐阅读
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 理解文档对象模型(DOM)
    本文介绍了文档对象模型(DOM)的基本概念,包括其作为HTML文档的节点树结构,以及如何通过JavaScript操作DOM来实现网页的动态交互。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
author-avatar
fuckyourgirlfriend
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有