我有一个简单的html
页面,只有一个按钮
<html>
<head>
<script>
function sender() {
var oReq = new XMLHttpRequest();
oReq.open('GET', 'http://localhost:8888?param2=value2', true);
oReq.onreadystatechange = function() {
if (oReq.readyState == 4) {
if (oReq.status == 200) {
alert(xmlhttp.responseText);
}
if (oReq.status == 404) {
alert("404040404!");
}
}
};
oReq.send();
}
</script>
</head>
<body>
<button id="click" onclick="sender();">Send</button>
</body>
</html>
我已经在java上编写了简单的http服务器,除了读取传入的请求并显示控制台之外什么都不做。
但是如何从服务器发送对我的文件的响应?例如,我的文件位于那里
file:///C:/Users/Admin/Desktop/development/test.html
请求看起来像这样
GET /?param2=value2 HTTP/1.1
Host: localhost:8888
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,ru-ru;q=0.8,ru;q=0.5,en-us;q=0.3
Accept-Encoding: gzip, deflate
Origin: null
Connection: keep-alive
Header parsing result: param2=value2
发送回复的位置和方式?
服务器正在读取此标题
BufferedReader reader = new BufferedReader(new InputStreamReader(
sock.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while (true) {
line = reader.readLine();
if (line == null || line.isEmpty())
break;
sb.append(line + System.getProperty("line.separator"));
}
return sb.toString();
答案 0 :(得分:1)
嗯,您已经获得了响应,如果请求正常,则响应会显示在Javascript警报中。只需执行任何操作即可将此警报替换为HTML页面中的实际显示。
oReq.onreadystatechange = function() {
if (oReq.readyState == 4) {
if (oReq.status == 200) {
//This is where you should put the code (or function call) when everything went ok
}
if (oReq.status == 404) {
//this is when you got a 404 error
}
}
};
如果您希望将其保存到客户端计算机上的文件中,那么您应该从服务器端代码发送回文件流,然后再由客户端保存(如任何文件下载),但就我而言知道,你不能在完整的AJAX中做到这一点,你需要一个普通的http请求才能做到这一点。请注意,您错过了AJAX代码中的大部分错误处理...除了404错误之外,请求有多种方式可能会失败,实际上当您设置所有这些错误时,404错误可能是最不可能发生的事。