ajax基本用法

ajax能做到无刷新数据交互,给用户体验带来好处的同时也减小了服务器的压力,所以运用ajax能使网站性能更强劲、更吸引用户。

大型网站少不了注册页面,而大多数情况下我们不想让用户有相同的注册ID,所以在用户注册成功之前必须进行用户名的检测。ajax还未出现之前,验证方法基本上是待用户填完所有选项之后提交到后台,如果已经有相同ID,则返回提示信息给用户,这样的话表单submit之后页面后刷新,而用户填的其他信息页就白费了,还得重新填一遍。

ajax完美的解决了这个问题,用户填完用户名马上检测是否已被注册。下面截取几个网站的用户名检测:

淘宝网:

百度:

微博:

这样是不是很酷?

首先,ajax并不是什么神秘的东西,我认为它就是一个特殊的JavaScript对象,有着自己的方法和接口。原理框图如下:

第一步:ajax引擎对象的创建(相对简单的创建方法,更严格的方式请参考W3C):


1

2

3

4

5

6

7

8

9

10

11

//创建Ajax引擎对象

function getXmlHttpRequest(){

    var xmlHttpRequest= "";

    if(window.XMLHttpRequest){ // 火狐

        xmlHttpRequest = new XMLHttpRequest();

    }

    else{ // IE

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

    }

    return xmlHttpRequest;

}

函数getXmlHttpRequest()返回一个ajax对象,所以使用的时候可以直接赋值:


1

2

var myAjaxObject=null;

myAjaxObject = getXmlHttpRequest();

第二步:创建请求机制:(建立与服务器端的通信接口)

ajax请求方式有两种:get和post,下面分别介绍如何建立连接以及它们之间的区别。

◆ get 方式请求格式:


1

2

3

4

5

6

/**** 方式一:get 方式请求 ******/

var url = "process.php?userName="+$("userName").value;

myAjaxObject.open("get",url,true);

//回调处理函数指定为 calback();

myAjaxObject.onreadystatechange=callBack;

myAjaxObject.send(null);

其中open方法的三个参数解释:

1、请求方式:get / post :
2、向服务器请求的 url(后台处理的地址) :
3、 true:异步机制;false:同步机制(ajax的最大好处就是异步,所以基本选择true)

onreadystatechange=callback 意思就是服务器返回的状态改变的时候所选择的处理方式,callback为一个函数(不可写成callback()),也可写成:


1

onreadystatechange=function(){ /*code here...*/ }

◆post 方式请求格式:


1

2

3

4

5

6

7

8

9

10

11

/******** 方式二:post 方式请求 ********/

var url = "process.php";

//【不同之处1】发送的数据另写

var data = "userName="+$("userName").value;

myAjaxObject.open("post",url,true);

// 【不同之处2】post方式一定要加上这句话

myAjaxObject.setRequestHeader("Content-Type",

"application/x-www-form-urlencoded");

//回调处理函数指定为 callback();

myAjaxObject.onreadystatechange=callBack;

myAjaxObject.send(data); //【不同之处3】 send()函数带参数

最后说明get和post在形式上和性能上的差异:

? post传输数据时,不需要在URL中显示出来,而get方法要在URL中显示。
? post传输的数据量大,可以达到2M,而get方法由于受到URL长度的限制,只能传递大约1024字节.
? post是为了将数据传送到服务器段,get是为了从服务器段取得数据。当然get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据,post的信息作为http请求的内容,而get是在Http头部传输的。

第三步:如何处理返回的数据?

首先得判断数据的通信传输状态:

当 readyState 等于 4 且状态为 200 时,表示响应已就绪,可以在前端进行数据处理了。

其次,返回的数据格式主要有文本(.responseText)、JSON(.responseText)和XML(.responseXML),它们各自的处理方式都不相同。

● 文本格式的处理方式:

此时对应于服务器端的process.php文件大致为:


1

2

3

4

5

6

7

8

9

header("Content-type: text/html; charset=utf-8");

header("Cache-Control: no-cache");

$username=$_POST[‘userName‘];

if($username=="tangbc" || $username=="admin"){

/*只做简单的判断例子,实际项目中应该查找数据库*/

echo "<b>抱歉!不可用</b>";

}else{

echo "<b>恭喜!可以使用!</b>";

}

此时前端的处理函数callback为:


1

2

3

4

5

6

function callBack(){

    if(myAjaxObject.readyState==4 && myAjaxObject.status==200){

        /* 1,返回格式是 文本格式 (responseText) 的处理方式:*/

        $("isExist").innerHTML=myAjaxObject.responseText;

        }

}

● JSON格式的处理方式:

此时对应于服务器端的process.php文件大致为:


1

2

3

4

5

6

7

8

9

header("Content-Type: text/html; charset=utf-8");

header("Cache-Control: no-cache");

$username=$_POST[‘userName‘];

if($username=="tangbc" || $username=="admin"){

        //输出的是 类JSON格式 的字符串

    echo ‘{"msg":"抱歉!不可用!!"}‘

}else{

    echo ‘{"msg":"恭喜!可以用"}‘;

}

此时前端的处理函数callback为:


1

2

3

4

5

6

7

8

9

10

function callBack(){

    if(myAjaxObject.readyState==4&&myAjaxObject.status==200){

        // str为服务器返回来的字符串 {"msg":"抱歉!不可用!!"}

        var str = myAjaxObject.responseText;

        // 将字符串str转换为JSON格式(对象数组)

        var obj = eval("("+str+")");

        // obj.msg 即为要在浏览器显示的数据 “抱歉!不可用!!” 

        $("isExist").innerHTML=obj.msg;        

    }

}

● XML格式的处理方式:

此时对应于服务器端的process.php文件大致为:


1

2

3

4

5

6

7

8

header("Content-type: text/xml; charset=utf-8");

header("Cache-Control: no-cache");

$username=$_POST[‘userName‘];

if($username=="tangbc" || $username=="admin"){

    echo "<res><mes>抱歉!不可用</mes></res>";

}else{

    echo "<res><mes>恭喜!可以用</mes></res>";

}

此时前端的处理函数callback为:


1

2

3

4

5

6

7

8

9

10

function callBack(){

  if(myAjaxObject.readyState==4&&myAjaxObject.status==200){

  /* 2,返回格式是 XML(responseXML) 的处理方式:*/

  //获取服务器端生成的XML的标签名

var tag=myAjaxObject.responseXML.getElementsByTagName(‘mes‘);

  //获取该标签名下的文本内容(需要的信息)

   var val = tag[0].childNodes[0].nodeValue;

   $("isExist").innerHTML=val;

   }

}

至此,ajax的小小案例已经算是做完了,您可以在线测试一下:ajax用户名检测DEMO(不可用的用户名为:tangbc、admin)

时间: 2024-10-10 16:12:46

ajax基本用法的相关文章

详细解读Jquery的$.get(),$.post(),$.ajax(),$.getJSON()用法

一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数. 而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明 $.get("data.php",$("#firstName.val()"),function(data){ $("

ajax实战用法详解

谦虚使人进步,总结使人提高! 以下5个方法执行一般Ajax请求的简短形式,在处理复杂的Ajax请求时应该使用jQuery.ajax() 1.load(url,[data],[callback])载入远程HTML文件代码并插入至DOM中,默认使用GET方式,传递参数时自动转换为POST方式. 示例代码如下://无参数.无回调函数$("#showload").load("load.htm");//无回调函数$("#showload").load(&q

js原生ajax与jquery的ajax的用法区别

什么是ajax和原理? AJAX 是一种用于创建快速动态网页的技术. 通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据 XMLHttpRequest对象的基本属性: onreadtstatechange 每次状态改变所触发事件的时间处理程序. responseText 从服务器响应返回以字符串为形式的数据 responseXML 从服务器响应返回以XML(DOM兼容文档)数据对象 status 从服务器返回的数字代码 100-199 用于指定客户端应相应的某些动作. 2

jQuery ajax - getJSON() 用法实例

实例 从 test.js 载入 JSON 数据并显示 JSON 数据中一个 name 字段数据: $.getJSON("test.js", function(json){ alert("JSON Data: " + json.users[3].name); }); 定义和用法 通过 HTTP GET 请求载入 JSON 数据. 在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 "myurl?cal

深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问题,更幸福的是你的js代码将大大地简化,看完本文,你会发现,ajax,简单的来讲就是一句话的事情. 本文重点是来讲讲jQuery中调用ajax的4种方法:$.get.$.post.$getJSON.$ajax.如果读者没有javascript和jquery的知识,或者没有ajax的概念,那么请先去问

理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

ajax的4种方法:$.get.$.post.$getJSON.$ajax. 1.$.get $.get()方法使用GET方式来进行异步请求,它的语法结构为: $.get( url [, data] [, callback] ) url:string类型,ajax请求的地址. data:可选参数,object类型,发送至服务器的key/value数据会作为QueryString附加到请求URL中. callback:可选参数,function类型,当ajax返回成功时自动调用该函数. 例: $.

Jquery的$.get(),$.post(),$.ajax(),$.getJSON()用法详细解读

1.$.get $.get()方法使用GET方式来进行异步请求,它的语法结构为: $.get( url [, data] [, callback] ) 解释一下这个函数的各个参数: url:string类型,ajax请求的地址. data:可选参数,object类型,发送至服务器的key/value数据会作为QueryString附加到请求URL中. callback:可选参数,function类型,当ajax返回成功时自动调用该函数. $.get()实例: $.get("data.php&qu

jquery ajax 的用法

jquery的ajax请求的主要参数 beforeSend:发送ajax请求之前 success:发送ajax请求成功 error:发送ajax请求错误,通常是网络失去连接.服务器出错.后台方法错误等造成的 代码: $(function() { $.ajax( { url:location.href, dataType:'json', type:'post', data:{action:'_yundanran-all-cat'}, beforeSend:function() { console.

$.ajax 的用法以及参数设置

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

【原创】Ajax的用法总结

一.什么是Ajax Ajax英文全称为“ Asynchr JavsScript and XML”(异步的JavaScript和XML),是一种创建 交互式网页的开发技术. 二.Ajax技术的核心 Ajax是一系列相关技术的融合,其核心包括XMLHttpRequest.JavsScript和DOM技术,数据格式 的不同可能会用到Json或者XML的技术. XMLHttpRequest是它的核心的内容,它能够为页面中的JavaScript脚本提供特定的通信方式, 从而使页面的javascript脚本