笔记: AJAX

概念:

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

Question: 当注册一个网页的时候,填写完用户名,文本框刚刚失去焦点,马上提示该用户已经被注册。这肯定是访问了后台,但是页面也没有刷新呀。一般是用了AJAX。不重新加载整个页面的情况下与服务器进行交互。

语法:

1. JavaScript:

function getInfo()
{
	var xmlhttp;
	if (window.XMLHttpRequest){
            // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
		xmlhttp=new XMLHttpRequest();
	}else{	// IE6, IE5 浏览器执行代码
	    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function(){
	    if (xmlhttp.readyState==4 && xmlhttp.status==200){
                 var str = xmlhttp.responseText;
                 alert(str);
	    }
	}
	xmlhttp.open("GET","/url",true);
	xmlhttp.send();
}

代码解释:(以Java为例!)

首先是执行最下面的xmlhttp.open();之后发送给服务器处理,处理完成后执行onreadystatechange=function(){} ,在其中操作。

xmlhttp.open()的三个参数分别是:执行get/post方法,访问的URL地址, 是否为异步请求。

第一个参数:

GET,xmlhttp.open("GET","/url",true);  向服务器发送数据就只能在URL中带过去,/url?data=123;

POST ,xmlhttp.open("POST","/url",true); 向服务器发送数据方法,需要设置一下请求头, setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //以form表单的形式提交,后台就可以像接受form表单数据一样接受数据。  xmlhttp.send("data=123");再向服务器发送数据。

第二个参数: /url    访问服务器的servlet。

第三个参数:

true 为异步操作,方法写在onreadystatechange=function(){}中。

false为同步操作, 方法直接写在send的后面,不需要onreadystatechange

 

解释:xmlhttp.readyState==4

readyState从 0 到 4 发生变化。

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪

status为访问状态,404 页面没找到, 500 内部错误, 200访问正常等。

  • 1xx  -消息: 请求正在处理,请稍后。。。
  • 2xx -成功处理
  • 3xx -重定向到其他地方: 需要客户端再次发送请求
  • 4xx -客户端错误,eg: 非法的资源请求,禁止访问
  • 5xx -服务器段错误 ,eg: 服务器抛出异常

在Java中将处理结果的字符串,一般是以JSON字符串返回,存储在前端xmlhttp.responseText中。

2.  jQuery写法:

jquery将上述写法进行了封装,使得我们更加简单和方便的去使用ajax。常见用法:

$.ajax(function(){
    type: "post",
    url : "url",
    data: {"name":"Peter"}, 
    success:function(data, status){
       //处理
    },
    error:function(){
        //error有三个参数,可以依据情况需要写
    }
});

jquery还专门封装了$.get() 和 $.post()的ajax用法,分别执行get和post。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值