ajax
1、有些要引入jquery
2、ajax要连上服务器方可看到效果
3、//注释内容 and <!-- 注释内容 -->
一、ajax介绍:
AJAX = Asynchronous JavaScript and XML(异步的JavaScript和XML)。
AJAX 是一种用于创建快速动态网页的技术。
不用刷新页面,但可以和服务器端进行通信的方式。
使用 Ajax 的主要方式是 XMLHttpRequest 对象
二、XMLHttpRequest 对象:
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
最兼容的创建方法:
- <script>
- 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");
- }
- xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
- xmlhttp.send();
- xmlhttp.onreadystatechange=function(){
- if(xmlhttp.readyState==4 && xmlhttp.status==200){
- document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
- }
- }
- </script>
1、open() 和 send();方法:
open(method,url,async)//method:请求的类型;GET 或 POST, url:文件在服务器上的位置, async:true(异步)或 false(同步)
send(string);//string:仅用于POST请求(将请求发送到服务器。)
例:
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
(1),GET 还是 POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
a.无法使用缓存文件(更新服务器上的文件或数据库)
b.向服务器发送大量数据(POST 没有数据量限制)
c.发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
2、setRequestHeader(header,value);//header:规定头的名称,value规定头的值
三、Ajax 传输数据的 3 种方式:
1、XML:笨重,解析困难,单 XML是通用的数据交换格式。
2、HTML:不需要解析可以直接放到文档中,适用于仅跟新一部分区域,但传输 数据不是很方便,且html代码需要拼装完成。
3、JSON:小巧,有面向对象的特性,而且很多第三方工具,使用最多。
四、获取服务器响应:
使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
responseText :获得字符串形式的响应数据。//来自服务器的响应不是xml时使用
xmlhttp.responseText;//返回字符串形式的响应
responseXML :获得 XML 形式的响应数据。 //来自服务器的响应是xml时使用
xmlhttp.responseXML();//得到的相当于document可以访问xml里的标签等
五、XMLHttpRequest 对象的三个重要的属性:
1、onreadystatechange 存储函数(或函数名),每当readyState属性改变时,就会调用该函数。
2、readyState 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
3、status 200: "OK"
404: 未找到页面
4、当 readyState 等于 4 且状态为 200 时,表示响应已就绪
(***重点***)
六、使用 jquery 操作 Ajax
1、load 方法: 可以用于 HTML 文档的元素节点,文档的元素节点,
把结果直接加入对应的子元素,常用于操作一个html片段
例1:核心代码
- <script>
- $(function(){
- $(".wrap a").click(function(){
- var Jurl=this.href;
- var args={"time":new Date()};
- $("#shownr").load(Jurl,args);
- return false;
- });
- });
- </script>
- <body>
- <div class="wrap">
- <a href="yuanqiao.html">yuanqiao</a>
- <!-- 此处可以多写几个a 多建立些外部 .html -->
- </div>
- <div id="shownr">
- </div>
- </body>
- <!-- yuanqiao.html 代码 -->
- <p>my name is yuanqiao</p>
- <p>我是前端程序员,励志成为NB的前端</p>
例2:php文件获取传过来的参数并显示
- <script>
- $(function(){
- $("#shownr").click(function(){
- var Jurl="ajax_info.php?user=yuanqiao&lname=Ford";
- $("#myDiv").load(Jurl);
- });
- });
- </script>
- </head>
- <body>
- <h2>AJAX</h2>
- <button type="button" id="shownr">Request data</button>
- <div id="myDiv"></div>
- </body>
- <!-- ajax_info.php -->
- <p>你好,<?php echo $_GET['user'] ?>,今天过得怎么样?</p>//
- <!-- $_GET['user'] php中用于获取客户端传输的user数据 -->
2、$.get,$.post,$.getJSON:更加灵活,去除使用load方法情况,大部分使用这3个方法
三个参数:
url: Ajax 请求的目标 URL
args: 传递的参数:JSON 类型
data: Ajax 响应后的数据,可能是XML,HTML,JSON
- $.get(url,args,function(data){
- });
请求json数据
- $.get(url,args,function(data){
- },"JSON");
或者
- $.getJSON(url,args,function(data){
- });
例1:xml
- <script>
- $(function(){
- $(".wrap a").click(function(){
- var Jurl=this.href;
- var args={"time":new Date()};
- $.get(Jurl,args,function(data){
- var name=$(data).find("name").text();
- var life=$(data).find("life").text();
- $("#shownr").empty().append("<p>"+name+"</p>").append("<p>"+life+"</p>");
- });
- return false;
- });
- });
- </script>
- <body>
- <div class="wrap">
- <a href="yuanqiao.xml">yuanqiao</a>
- <a href="xiewendong.xml">xiewendong</a>
- <a href="yangguo.xml">yanguo</a>
- </div>
- <div id="shownr">
- </div>
- </body>
- <!-- yuanqiao.xml -->
- <?xml version="1.0" encoding="utf-8"?>
- <message>
- <name>my name is yuanqiao</name>
- <life>我是前端程序员,励志成为NB的前端</life>
- </message>
例2:json
- <script>
- $(function(){
- $(".wrap a").click(function(){
- var Jurl=this.href;
- var args={"time":new Date()};
- $.get(Jurl,args,function(data){
- var name=data.message.name;
- var life=data.message.life;
- $("#shownr").empty().append("<p>"+name+"</p>").append("<p>"+life+"</p>");
- },"json");
- return false;
- });
- });
- </script>
- <body>
- <div class="wrap">
- <a href="yuanqiao.json">yuanqiao</a>
- <a href="xiewendong.json">xiewendong</a>
- <a href="yangguo.json">yanguo</a>
- </div>
- <div id="shownr">
- </div>
- </body>
- <!-- yuanqiao.json -->
- {"message":{
- "name":"my name is yuanqiao",
- "life":"我是前端程序员,励志成为NB的前端"}
- }
七、拓展:用户名验证
1、案例说明,使用json模拟数据库,使用ajax读取并判断
- <script>
- $(function(){
- $("#userName").keyup(function(){
- var $val=$(this).val();
- var $val=$val.trim();
- if(""!=$val){
- var Jurl="message.json?"+new Date();//去除缓存
- var args={"time":new Date()};
- $.get(Jurl,args,function(data){
- var messages=data.messages.split(',');
- var Matching;
- for(var i in messages){
- if(messages[i]==$val){
- $("#message").html("<font color='red'>此用户名以存在</font>");
- return Matching;
- }else{
- $("#message").html("<font color='blue'>此用户名可以使用</font>");
- }
- }
- },"json");
- }
- });
- });
- </script>
- <body>
- userName:
- <input type="text" id="userName"><span id="message"></span>
- </body>
- <!-- message.json 代码 -->
- {"messages":"aaa,bbb,ccc,ddd,fff,abd,abc,yuan,qiao,yuanqiao,hehe,he,lala,lili,dong,java,web,ajax,js,html,css"}

浙公网安备 33010602011771号