javascript之jQuery ajax 操作

11 篇文章 0 订阅
2 篇文章 0 订阅

ajax不足

1.浏览器的支持度不够,IE 5以后才支持

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

3.搜索引擎的支持度不同

4.开发调试工具缺乏

三层方法

1.$.ajax()最底层方法

2.$.load(),$.get(),$.post()最常用

3.$.getScript(),$.getJSON()方法

load方法

  $(function(){
	  $("#send").click(function(){
			  $("#resText").load("test.html");
	  })
  })
  $(function(){
      $("#send").click(function(){
              $("#resText").load("test.html .para");
      })
  })
  $(function(){
      $("#send").click(function(){
              $("#resText").load("test.html .para",function (responseText, textStatus, XMLHttpRequest){
                         alert( $(this).html() );    //在这里this指向的是当前的DOM对象,即 $("#iptText")[0]
                         alert(responseText);       //请求返回的内容
                         alert(textStatus);            //请求状态:success,error,notmodified,timeout
                         alert(XMLHttpRequest);     //XMLHttpRequest对象
            });
      })
  })
//无论ajax是否请求成功,只要当请求完成后,回调函数就被触发. 

get方法

//<![CDATA[
	$(function(){
	   $("#send").click(function(){
			$.get("get1.php", { 
						username :  $("#username").val() , 
						content :  $("#content").val()  
					}, function (data, textStatus){
                        $("#resText").html(data); // 把返回的数据添加到页面上
					}
			);
	   })
	})
//]]>
//返回HTML格式,在不需要与其他应用程序共享数据的时候,使用HTML最为简单
 <?php 
    header("Content-Type:text/html; charset=utf-8");
    echo "<div class='comment'><h6>{$_REQUEST['username']}:</h6><p class='para'>{$_REQUEST['content']}</p></div>";
?>
//<![CDATA[
	$(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 txtHtml = "<div class='comment'><h6>"+username+":</h6><p class='para'>"+content+"</p></div>";
                        $("#resText").html(txtHtml); // 把返回的数据添加到页面上
					});
	   })
	})
//]]>
//返回XML格式,体积相对较大,解析和操作的速度都会慢一点
<?php 
    header("Content-Type:text/xml; charset=utf-8");
    echo "<?xml version='1.0' encoding='utf-8'?>".
         "<comments>".
         "<comment username='{$_REQUEST['username'] }' >".
         "<content>{$_REQUEST['content']}</content>".
         "</comment>".
         "</comments>";
?>
//<![CDATA[
	$(function(){
	   $("#send").click(function(){
			$.get("get3.php", { 
						username :  $("#username").val() , 
						content :  $("#content").val()  
					}, function (data, textStatus){
					    var username = data.username;
						var content = data.content;
					    var txtHtml = "<div class='comment'><h6>"+username+":</h6><p class='para'>"+content+"</p></div>";
                        $("#resText").html(txtHtml); // 把返回的数据添加到页面上
					},"json");
	   })
	})
//]]>
//返回JSON文件
<?php 
    header("Content-Type:text/html; charset=utf-8");
    echo "{ \"username\" : \"{$_REQUEST['username']}\" , \"content\" : \"{$_REQUEST['content']}\"}" 
?> 
//<![CDATA[
	$(function(){
	   $("#send").click(function(){
	          $("#resText").load("get1.php?username="+$('#username').val()+"&content="+$('#content').val());
			  //如果是中文需要编码
	   })
	})
//]]>

POST方法

1.GET请求会在URL进行传递,POST是作为消息实体发送给Web服务器

2.GET对传输的数据大小有限制,不大于2KB,POST方法理论上不受限制

3.GET方法请求的数据会被浏览器缓存起来,别人可以从历史记录中查看,存在安全问题

只需要修改$.get()为$.post()就可以,其它不变

	$(function(){
	   $("#send").click(function(){
			$.post("post1.php", { 
						username :  $("#username").val() , 
						content :  $("#content").val()  
					}, function (data, textStatus){
                        $("#resText").html(data); // 把返回的数据添加到页面上
					}
			);
	   })
	})
还可以使用load实现相同功能

	$(function(){
	   $("#send").click(function(){
	          $("#resText").load("post1.php",{ 
						username :  $("#username").val() , 
						content :  $("#content").val()  
			  })
	   })
	})

$.getScript()

动态加载js文件

   $(function(){
        $('#send').click(function() {
             $.getScript('test.js');
        });
   })

设置回调函数

//<![CDATA[
   $(function(){
             $.getScript('jquery.color.js',function(){
			      $("<p>加载JavaScript完毕</p>").appendTo("body");
				  $("#go").click(function(){
					   $(".block").animate( { backgroundColor: 'pink' }, 1000)
					              .animate( { backgroundColor: 'blue' }, 1000);
				  });
			 });
   })
//]]>

$.getJSON()

$.each()函数不同于jQuery对象的each()方法,它是一个全局函数,不操作jQuery对象,而是以一个数组或者对象作为第1个参数,以一个回调函数作为第2个参数,回调函数拥有两个参数,第1个为对象的成员函数或数组的索引,第2个为对应变量或内容.

//<![CDATA[
   $(function(){
        $('#send').click(function() {
             $.getJSON('test.json', function(data) {
                 $('#resText').empty();
				  var html = '';
				  $.each( data  , function(commentIndex, comment) {
					  html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
				  })
				 $('#resText').html(html);
            })
       })
   })
//]]>

JSONP形式

从图片网站搜索汽车类别的4张最新图片

//<![CDATA[
   $(function(){
        $('#send').click(function() {
            $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=car&tagmode=any&format=json&jsoncallback=?",
					  function(data){
						  $.each(data.items, function( i,item ){
								$("<img class='para'/> ").attr("src", item.media.m ).appendTo("#resText");
								if ( i == 3 ) { 
									return false;
								}
					      });
		             }
		    ); 
       })
   })
//]]>

ajax方法实现get

//<![CDATA[
   $(function(){
        $('#send').click(function() {
            $.ajax({
			  type: "GET",
			  url: "test.js",
			  dataType: "script"
			}); 
        });
   })
//]]>

serialize()方法

能够将DOM元素内容序列化为字符串,会自动编码

	$(function(){
	   $("#send").click(function(){
			$.post("get1.jsp", $("#form1").serialize() , function (data, textStatus){
                        $("#resText").html(data); // 把返回的数据添加到页面上
					}
			);
	   })
	})

serializeArray()方法

不是返回字符串,而是将DOM元素序列化后,返回JSON格式的数据.

   $(function(){
		 var fields = $(":checkbox,:radio").serializeArray();
		 console.log(fields);// Firebug输出
		 $.each( fields, function(i, field){
		    $("#results").append(field.value + " , ");
		}); 
   })

$.param方法

//<![CDATA[
	$(function(){
	  	var obj={a:1,b:2,c:3};
		var  k  = $.param(obj);
		alert(k)        // 输出  a=1&b=2&c=3
	})
//]]>
//用来对一个数组或对象按照key/value进行序列化

ajax全局事件

//可以为网页提供一个提示信息,常用的提示信息是"加载中" 
  $(function(){
    //demo1:
        $('#send1').click(function() {
            $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=car&tagmode=any&format=json&jsoncallback=?",
					  function(data){
					      $("#resText1").empty();
						  $.each(data.items, function( i,item ){
								$("<img/> ").attr("src", item.media.m ).appendTo("#resText1");
								if ( i == 3 ) { 
									return false;
								}
					      });
		             }
		    ); 
       });

   //demo2:
	   $("#send2").click(function(){
			$.post("get1.jsp", { 
						username :  $("#username").val() , 
						content :  $("#content").val()  
					}, function (data, textStatus){
                        $("#resText2").html(data); // 把返回的数据添加到页面上
					}
			);
	   })

		$.ajaxPrefilter(function( options ) {
			options.global = true;
		});
		//共用这2个全局的ajax事件
	   $("#loading").ajaxStart(function(){
	      $(this).show();
	   });
	   $("#loading").ajaxStop(function(){
	      $(this).hide();
	   });


   })











评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值