ajax.js
var btn = document.querySelector("#clickMe");
var http_request = null;
/**客户端的请求程序**/
function makeRequest(url) {
if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
}
}
if (!http_request) {
console.log("创建客户端xml对象不成功!终止。")
return false;
}
http_request.onreadystatechange = alertContent;
http_request.open('GET', url, true);
http_request.send(null);
}
/**处理服务器的响应**/
function alertContent() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
} else {
console.log("收到响应,但状态码不是200,而是" + http_request.status);
}
} else {
console.log("未收到响应,readyState不为4,为:" + http_request.readyState);
}
}
/**按钮的监听事件**/
btn.addEventListener("click",function(){
makeRequest("/html/content.txt");
}, false);
server.js
var http = require("http");
var fs = require("fs");
var path = require("path");
var mime = require("mime");
var cache = {};
function send404(response) {
response.writeHead(404, {"Content-type": "text/plain"});
response.write("Error 404: Oh my god! The resource not found.");
response.end();
}
function sendFile(response, filePath, fileContents) {
response.writeHead(
200,
{"Content-type": mime.lookup(path.basename(filePath))}
);
response.end(fileContents);
}
function serveStatic(response, cache, absPath) {
if (cache[absPath]) {
sendFile(response, absPath, cache[absPath]);
} else {
fs.exists(absPath, function(exists){
if (exists) {
console.log("成功找到的路径为" + absPath);
fs.readFile(absPath, function(err, data){
if (err) {
send404(response);
} else {
cache[absPath] = data;
sendFile(response, absPath, data);
}
});
} else {
console.log("断点,力求寻找的路径为" + absPath);
send404(response);
}
});
}
}
var server = http.createServer(function(request, response){
console.log("server start.")
var filePath;
if (request.url == "/") {
filePath = "/html/index.html";
} else {
filePath = request.url;
}
var absPath = "./" + filePath;
serveStatic(response, cache, absPath);
}).listen(3000);
文件目录: