// JavaScript Document
*这段代码的核心分为三步:
1、建立一个变量 xmlHttp 来引用即将创建的 XMLHttpRequest 对象。
2、尝试在 Microsoft 浏览器中创建该对象:
1)尝试使用 Msxml2.XMLHTTP 对象创建它。
2)如果失败,再尝试 Microsoft.XMLHTTP 对象。
3、如果仍然没有建立 xmlHttp,则以非 Microsoft 的方式创建该对象。
*/
function createXmlHttp(){ var xmlHttp = false; try { //在 Microsoft 浏览器上创建 XMLHttpRequest 对象 //如果使用较新版本的 Internet Explorer,则需要使用对象 Msxml2.XMLHTTP xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { //较老版本的 Internet Explorer 则使用 Microsoft.XMLHTTP xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } //在非 Microsoft 浏览器上创建 XMLHttpRequest 对象 if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } return xmlHttp; } /*发出请求: 在所有 Ajax 应用程序中基本都雷同的流程: 1、从 Web 表单中获取需要的数据。 2、建立要连接的 URL。 3、打开到服务器的连接。 4、设置服务器在完成后要运行的函数。 5、发送请求。 */ function callServer() { // Get the city and state from the web form var city = document.getElementById("city").value; var state = document.getElementById("state").value; // Only go on if there are values for both fields if ((city == null) || (city == "")) return; if ((state == null) || (state == "")) return; // Build the URL to connect to var url = "/scripts/getZipCode.PHP?city=" + escape(city) + "&state=" + escape(state); // Open a connection to the server xmlHttp.open("GET",url,true); // Setup a function for the server to run when it's done xmlHttp.onreadystatechange = updatePage; // Send the request xmlHttp.send(null); } /*xmlHttp的 onreadystatechange 属性可以告诉服务器在运行完成后做什么。 因为代码没有等待服务器,必须让服务器知道怎么做以便您能作出响应。 在这个示例中,如果服务器处理完了请求,一个特殊的名为 updatePage() 的方法将被触发。 需要特别注意的是该属性在代码中设置的位置 —— 它是在调用 send() 之前 设置的。 发送请求之前必须设置该属性,这样服务器在回答完成请求之后才能查看该属性 */ function updatePage() { if (request.readyState == 4) if (request.status == 200) alert("Server is done!"); else if (request.status == 404) alert("Request URL does not exist"); else alert("Error: status code is " + request.status); }