我尝试使用Node.js测试我的Ajax代码。我之前没有使用它,所以我是新手。 这是我的代码:
function viewTemplate(content) {
return function() {return [
m('#header', [
'my site',
m('a', {config:m.route, href:'/'}, 'home'),
m('a', {config:m.route, href:'/1'}, 'page 1'),
m('a', {config:m.route, href:'/2'}, 'page 2'),
]),
m('hr'),
m("#view", content),
m('#footer', 'copyright my site'),
]}
}
component1 = {
view: viewTemplate([
m('h1', 'component 1 page')
])
}
component2 = {
view: viewTemplate([
m('h1', 'component 2 page')
])
}
m.route(document.body, '/', {
'/': {view: viewTemplate()},
'/1': component1,
'/2': component2,
})
我的Node.js服务器:
<script>
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
@end @*/
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function callServer() {
var url = "http://localhost:8888/";
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}
function updatePage() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
alert(response);
}
}
</script>
我使用属性运行脚本:onclick =&#34; callServer()&#34;。警报没有告诉我什么。谢谢。
答案 0 :(得分:2)
您的代码运行正常,问题是您在不同的域或端口上运行客户端,然后服务器运行。
尝试在here上运行您的客户端。
修改强>
使用Express包非常简单:
var app = require('express')();
app.get('/', function(req, res) {
res.send('Test');
});
app.get('/index.html', function(req, res) {
res.sendfile('index.html');
});
app.listen(8888, function() {
console.log('Server started at port 8888');
});
修改#2 强>
没有快递:
var http = require('http'),
fs = require('fs');
var server = http.createServer(function(req, res) {
fs.readFile('./index.html', function(err, data) {
res.writeHeader(200, { 'Content-Type': 'text/html' });
res.write(data);
res.end();
});
}).listen(8888);
server.on('request', function(req, res) {
if(req.url == '/test') {
res.writeHeader(200, { 'Content-Type': 'text/plain' });
res.write('Test');
res.end();
}
});
修改#3 强>
要提供静态资源,请使用http://localhost:8888/这样的中间件:
var express = require('express'),
app = express();
app.use(express.static(__dirname + '/public'));
您应该将资产放在根目录中的public
目录中。
答案 1 :(得分:0)
尝试以下更改:
xmlhttp.send(null);
到xmlhttp.send();
var xmlHttp = false;
至var xmlHttp = null;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');}
下面看起来多余,您可能想要评论它:
// response.write("Test");
确保节点正在运行。
祝你好运。