AJAX基础和jQuery中的AJAX

来源:互联网 发布:沪港通数据 编辑:程序博客网 时间:2024/06/05 04:05

AJAX是在不重新加载整个页面的情况下,与服务器交换数据并异步更新部分网页。
1. javascript使用ajax
(1)生成XMLHttpRequest对象

var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}

(2)XMLHttpRequest对象向服务器发送请求

//语法xmlhttp.open(method,url,async)xmlhttp.open("GET","TEST1.txt",true);xmlhttp.send();

method:请求的类型有GET 或POST
url:文件在服务器上的位置
async:true(异步,默认方式),false(同步)
使用POST请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量的数据(post没有数据量的限制)
发送包含未知字符的用户输入时,post比get更稳定可靠
(3)服务器响应
使用XMLHttpRequest对象的responseText或responseXML属性获得服务器的响应
responseText:获得字符串形式的响应数据
responseXML:获得XML形式的响应数据

<div id="myDiv"><h2>Let AJAX change this text</h2></div><button type="button" onclick="loadXMLDoc()">通过 AJAX 改变内容</button><script type="text/javascript">function loadXMLDoc(){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.onreadystatechange=function()  {  if (xmlhttp.readyState==4 && xmlhttp.status==200)//请求完成,响应就绪    {    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;    }  }xmlhttp.open("GET","/ajax/test1.txt",true);xmlhttp.send();}</script>

如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,使用 responseXML 属性

<h2>My Book Collection:</h2><div id="myDiv"></div> //一个空的div<button type="button" onclick="loadXMLDoc()">获得我的图书收藏列表</button>//按钮,点击调用函数<script type="text/javascript">function loadXMLDoc(){var xmlhttp;var txt,x,i;//创建对象if (window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else  {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }xmlhttp.onreadystatechange=function()  {  if (xmlhttp.readyState==4 && xmlhttp.status==200)    {    xmlDoc=xmlhttp.responseXML; //获取XML对象    txt="";    x=xmlDoc.getElementsByTagName("title");//取出XML中所有title    for (i=0;i<x.length;i++)      {      //取出每一项及对应值      txt=txt + x[i].childNodes[0].nodeValue + "<br />";      }    document.getElementById("myDiv").innerHTML=txt;    }  }xmlhttp.open("GET","/example/xmle/books.xml",true);xmlhttp.send();}</script>

2.jQuery中ajax技术
这里写图片描述
(1)jquery中load方法load(url,[data],[callback])

<h3 id="test">请点击下面的按钮,通过 jQuery AJAX 改变这段文本。</h3><button id="btn1" type="button">获得外部的内容</button><script>$(document).ready(function(){  $("#btn1").click(function(){ //点击按钮触发事件    $('#test').load('/example/jquery/demo_test.txt');  })})</script>

可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。
responseTxt - 包含调用成功时的结果内容
statusTXT - 包含调用的状态
xhr - 包含 XMLHttpRequest 对象

<script>$(document).ready(function(){  $("button").click(function(){    $("#div1").load("/example/jquery/demo_test.txt",function(responseTxt,statusTxt,xhr){      if(statusTxt=="success")        alert("外部内容加载成功!");      if(statusTxt=="error")        alert("Error: "+xhr.status+": "+xhr.statusText);    });  });});</script>

(2)get()方法通过远程HTTP GET请求载入信息
$(selector).get(url,data,success(response,status,xhr),dataType)
这里写图片描述

$.get("test.php");//请求test.php网页,忽略返回值
$.get("test.cgi", { name: "John", time: "2pm" },  function(data){    alert("Data Loaded: " + data);  });

post用法与get用法相似

//发送数据并输出结果$.post("test.php", { name: "John", time: "2pm" },   function(data){     alert("Data Loaded: " + data);   });

3.getJSON方法
虽然load方法可以很快的加载数据到页面上,但是有时需要对获取的数据进行处理,但这样获取的内容必须先插入页面中,然后才能进行,因此它的执行效率不高。

$.getJSON(url,[data],[callback])

首先创建一个.json格式的文件UserInfo.json:

[    {        "name":"张三",        "sex":"男",        "email":"zhangsan@163.com"    },    {        "name":"李四",        "sex":"女",        "email":"lisi@163.com"    }]
<script type="text/javascript" >        $(function () {            $("#Button1").click(function () {                $.getJSON("UserInfo.json", function (data) {                    $("#divTip").empty();//清空div                    var strHtml = "";//建立空变量,存储获取的内容                    $.each(data, function (infoIndex, info) {                        strHtml += "姓名:" + info["name"] + "<br>";                        strHtml += "性别:" + info["sex"] + "<br>";                        strHtml += "邮箱:" + info["email"] + "<br>";                    })                    $("#divTip").html(strHtml);                })            })        })    </script>

4 getScript方法

创建一个文件UserInfo.js:

var data = [    {        "name": "张三",        "sex": "男",        "email": "zhangsan@163.com"    },    {        "name": "李四",        "sex": "女",        "email": "lisi@163.com"    }];    var strHtml = "";    $.each(data, function () {        strHtml += "姓名:" + this["name"] + "<br>";        strHtml += "性别:" + this["sex"] + "<br>";        strHtml += "邮箱:" + this["email"] + "<br>";    })    $("#divTip").html(strHtml);
<script type="text/javascript" >        $(function () {            $("Button1").click(function () {                $.getScript("UserInfo.js");            })        })    </script>
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 先科移动dvd主板坏了怎么办 离职单位不出劳动解除书怎么办 离职后一级建造师注册证怎么办 京牌货车报废挂靠公司不给办怎么办 二建挂靠注册证书到期了怎么办 二建证书挂靠公司不给钱怎么办 二建拿到证书原单位不解锁怎么办 凯云软件清单锁定只读了怎么办 苹果笔记本鼠标触摸板没反应怎么办 苹果笔记本键盘和触摸板失灵怎么办 苹果手机输入密码显示已停用怎么办 苹果7p手机刷机黑屏了怎么办 苹果5s来电接听屏幕卡顿怎么办? 手机摔了一下触屏失灵怎么办 小米手机摔了一下触屏失灵怎么办 苹果6sp触摸ic坏了怎么办 苹果4s屏幕摔裂了怎么办 新换的手机内屏颜色太亮怎么办 苹果手机摔了一下屏幕失灵怎么办 苹果手机6s屏幕坏了怎么办 苹果6s屏幕摔坏了怎么办 苹果手机屏幕进油了屏幕变暗怎么办 苹果手机不小心屏幕进油了怎么办 苹果6充电插口螺丝口坏了怎么办 苹果5s手机安装屏幕翘边怎么办 苹果手机摔了一下触摸屏失灵怎么办 苹果手机摔了下触摸屏失灵怎么办 苹果6老是屏幕失灵或者闪屏怎么办 华为荣耀8手触摸屏乱跳失灵怎么办 苹果5s屏幕有半边竖纹怎么办 苹果5s电源键坏了怎么办 苹果6s手机触屏失灵怎么办 不能取电池的手机触屏不灵怎么办? 7p主板触摸ic坏了怎么办 小米六手机摔了一下屏幕失灵怎么办 魅蓝5s触屏失灵怎么办 苹果手机键盘字母顺序乱了怎么办 红米手机进水后屏幕失灵怎么办 苹果7plus主屏按键坏了怎么办 苹果六手机上的红色变成粉色怎么办 苹果手机出现闪屏和手感不灵怎么办