日期:2014-05-16  浏览次数:20599 次

onreadystatechange使用
文档一
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
XMLHttp.onreadystatechange=A;//1
XMLHttp.open("get","http://localhost:8080/XML/14-3.xml",false);
XMLHttp.send()
alert(XMLHttp.responseText);
function A()
 { alert(XMLHttp.status);
 }
</script>
</head>
<body>
</body>
</html>
文档14-3.xml
<?xml version="1.0" encoding="gb2312"?>
<country>
<province id="0001">
  <province_name>黑龙江</province_name>
  <province_city>哈尔滨</province_city>
</province>
<province id="0002">
  <province_name>吉林省</province_name>
  <province_city>长春</province_city>
</province>
<province id="0003">
  <province_name>辽宁省</province_name>
  <province_city>沈阳</province_city>
</province>
<province id="0004">
  <province_name>山东省</province_name>
  <province_city>济南</province_city>
</province>
</country>
文档一中//1处指定服务器返回信息时客户端的处理方式。这儿一直不是很明白,我把文档一中的open()和send()加注释,//1处不会
调用函数A,把//1代码放在send()方法后面,也不会调用函数A,为什么onreadystatechange只能紧随XMLHttpRequest对象之后??


------解决方案--------------------
XMLHttp.open("get","http://localhost:8080/XML/14-3.xml",false);
浏览器由上而下逐行解析并执行代码。本来不会出现这种问题的,因为数据提交到服务器处理的时间是远大于浏览器解析JS代码的时间,但你将ajax指定为异步(false),因此浏览器会等待服务器处理完成再解析执行下面的代码
详细说明 http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp