我有html页面:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function pushMe(elem) {
var request = new XMLHttpRequest();
if (!request) alert("Error initializing XMLHttpRequest!");
request.open('GET', 'proj1.js', true);
request.onreadystatechange = function () {
if (request.readyState == 4)
elem.value = request.responseText;
};
elem.value = '...';
request.send(null);
}
</script>
</head>
<body>
<input type="button" onclick="pushMe(this);" value="Push Me!" id="btn"/>
</body>
</html>
和js文件(proj1.js):
var http = require('http');
var url = require('url');
var querystring = require('querystring');
function accept(req, res) {
res.writeHead(200, {
'Content-Type': 'text/plain',
'Cache-Control': 'no-cache'
});
res.end("HELLO!");
}
http.createServer(accept).listen(8080);
proj1.js和test.html在同一个文件夹中。 当我点击按钮时,为什么按钮的值不会改变? (它改变了,但是request.responseText是空的,为什么它不是&#34; HELLO!&#34;?)
答案 0 :(得分:1)
您正在使用文件协议中的文件,例如:
file:///c:\user\index.html
并且正在尝试访问在HTTP上运行的服务器,这是不可能的(除非您释放浏览器的安全权限,但事实并非如此)。
正确的是你在HTTP脚本上运行Ajax。
在开始使用网络编程之前,您应该了解什么是HTTP,WebServer,Client,Protocol,Request,Response和Status Code
http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/
[被修改]
试试这个:
request.open('GET', 'proj1.js', true);
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200) {
elem.value = request.responseText;
} else {
elem.value = "Error:" + request.status;//Get error
}
}
};
按F12(例如firefox),参见“NetWork”和“Console”选项卡:
使用开发者工具: