jquery与ajax的应用

ajax的不足 

 

1. 各个浏览器对XMLHttpRequest对象的支持度不足(兼容性问题)

2. 破坏浏览器的前进,后退功能。

3. 对搜索引擎支持不足。

4. 调试工具支持不足。

 

 

XMLHttpRequest对象的属性和方法

1.readyState属性

状态:0 代表未初始化。

        1 代表准备发送。

        2 已发送但还没收到响应

        3 正在接收

        4 接收完成

2.responseText属性

    包含客户端接收到的HTTP响应的文本内容。

    当readyState=4时,responseText才包含完整的响应信息。

    当readyState=3时,responseText包含未完整的响应信息。

    当readyState<3时,responseText为空字符串。

 

3.responseXML属性

    当readyState=4,并且响应头部的Content-Type的MIME类型为XML(text/xml或application/xml)时,该属性有值并且被解析成一个XML文档。

    其它情况为null,包括回传的XML文档不良或未完成响应回传。

 

4.status及statusText属性(描述http状态代码,及代码文本)

    当readyState>2,才能访问,否则出现异常。

5.onreadystatechange事件

     当readyState属性发生变化时触发此事件,用于触发回调函数。

 

6.open方法

     open(method, uri, async, username, password) 用来进行初始化工作

     返回值:得到一个包含send()方法的对象

     method:必须。用于指定HTTP方法如GET,POST,PUT....。按规定必须大写。

     uri:请求发送到服务器相应的URI.自动解析成绝对地址。

     async:请求是否异步,默认为true.

     调用open后,readystate状态为1.

 

7.send方法

     调用open 方法后,可以调用send()方法来发送请求。

     当open 中async=true时,send()方法调用后立即返回,否则会中断直到请求返回。

     send(data)

     data:可选。此处还有疑问。。

 

8.abort()方法
     该方法可以暂停一个HttpRequest请求或者HttpResponse的接收,并且将XMLHttpRequest的状态设置为初始化。

 

 

9.setRequestHeader(header,value)方法

     该方法用来设置请求的头部信息。在调用open()后调用这个方法。否则将得到一个异常。

10.getResponseHeader()方法

      当readystate>2时,该方法用来检索响应的头部信息。否则返回一个空字符串。

      getAllResponseHeaders()方法返回所有的HttpResponse头部信息。

 

 一个XMLHttpRequest例子

View Code
< script type = " javascript/text " >
var  xmlHttp
// 判断是否IE
if (window.ActiveXObject){
  
try {
       xmlHttp 
=   new  ActiveXObject( " Microsoft.XMLHTTP " );
   }
catch (e){
   xmlHttp
= false ;
   }
}
else {
   
try {
    xmlHttp
= new  XMLHttpRequest();
}
catch (e){
    xmlHttp
= false ;
}
}

if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0 ){
   xmlHttp.open(
" GET " " test.php? " content = " +content,true);
   //设置回调函数
   xmlHttp.onreadystatechange=recall();
   xmlHttp.send(null);
}

function recall(){
 if(xmlHttp.readyState==4){
   if(xmlHttp.status==200){
    xmlResponse = xmlHttp.responseXML;
    //xml处理
    myXml = xmlResponse.documnetElement;
    content = myXml.firstChild.data;
    //处理部分
   }
}else{
  alert(xmlHttp.statusText);
}
}


</script>

   

 jquery中的Ajax

 

 

1.load(url,data,function(
responseText, textStatus, XMLHttpRequest
){}) 方法(一般用于加载静态html文件到dom结点,是jquery对象的函数)

 用途:用于载入远程的HTML方法并插入到dom中。

 url:目标url地址。格式 "url"或者"url selector"。可以起筛选作用。

 data:可选。格式{name: "value",name: "value"},如果没有则使用get方法,如果有使用post方法。

 callback:可选。无论请求成功或者失败都会调用。

     responseText:返回的内容。

     textstatus:返回状态

     XMLHTTPReques:XMLHTTPReques对象

实例:

test.html

复制代码
< div  class ="comment" >
< h6 > 李四: </ h6 >
< class ="para" > 地板. </ p >
</ div >
< div  class ="comment" >
< h6 > 张三: </ h6 >
< class ="para" > 沙发. </ p >
</ div > 
复制代码

 新建一个test2.html

View Code
< input  type ="button"  id  ="send"  value ="Ajax获取" />
< div  class ="comment" > 已有评论: </ div >
< div  id ="resText" ></ div >

 jquery代码如下:

View Code
$( function (){
  $(
" #send " ).click( function (){
     $(
" #resText " ).load( " test.html " );
});
});

 $(function(){}); = jQuery(function(){}); =  jQuery(document).ready(function(){})}); 在dom加载完成后执行的代码。

 

 

 

2.两个全局方法

 $.get(url,data,function(){data,textStatus},type) ;

 $.post(url,data,function(){data,textStatus},type) ;

 用途:当需要传递一些参数给服务器中的页面时使用。

 url:目标url地址

 data:可选。格式{name: "value",name: "value"},会作为QueryString附加到请求的url中。

 callback:可选。只有当Response返回状态为success才调用。

       data:返回的内容,可以是xml,json,html片段。

      textstatus:返回状态success,error,notmodified,timeout
type:可选。 客户端请求的类型xml,json,html等。

 $.get()与$.post区别

1. 请求参数区别。

2. 数据大小的区别。

3. 安全性。

实例:

 
View Code
// $.get html文本
$( " #send " ).click( function (){
  $.get(
" get1.php " ,{username : $( " #username " ).val(),content : $( " #content " ).val()}, function (data,textStatus){$( " #resText " ).html(data);})
 });

// $.get xml文本
$ function (){
 $(
" #send " ).click( function (){
  $.get(
" get2.php " ,{username : $( " #username " ).val(),content : $( " #content " ).val()}, function (data,textStatus){
 
var  username  =  $(data).find( " comment " ).attr( " username " );
var  content  =  $(data).find( " comment content " ).text();
var  textHtml  =   " <div class='comment'><h6> " + username + " :</h6><p class='para'> "
+ content + " </p></div> " ;
$(
" $resText " ).html(textHtml);
});
 })
}

// $.get json文本
$ function (){
 $(
" #send " ).click( function (){
  $.get(
" get2.php " ,{username : $( " #username " ).val(),content : $( " #content " ).val()}, function (data,textStatus){
 
var  username  =  data.username;
var  content  =  data.content;
var  textHtml  =   " <div class='comment'><h6> " + username + " :</h6><p class='para'> "
+ content + " </p></div> " ;
$(
" $resText " ).html(textHtml);
});
 }),
" json "
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值