我有一个简单的HTML文件,其中包括jqGrid插件。我正在使用jqGrid插件在我的HTML页面中有一个树网格。
现在,我试图在node.js服务器中托管这个HTML。我的server.js看起来像这样
var http = require('http');
var fs = require('fs');
var path = require('path');
http.createServer(function (request, response) {
console.log('request starting...');
var filePath = '.' + request.url;
console.log('filePath : '+filePath);
if (filePath == './')
filePath = './tree.html';
var extname = path.extname(filePath);
console.log('extname : '+extname);
var contentType = 'text/html';
switch (extname) {
case '.js':
contentType = 'text/javascript';
break;
case '.css':
contentType = 'text/css';
break;
}
path.exists(filePath, function(exists) {
if (exists) {
fs.readFile(filePath, function(error, content) {
if (error) {
response.writeHead(500);
response.end();
} else {
response.writeHead(200, { 'Content-Type': contentType });
response.end(content, 'utf-8');
}
});
} else {
response.writeHead(404);
response.end();
}
});
}).listen(8125);
到目前为止,我能够在浏览器http://localhost:8125/中显示我的HTML内容。
我的HTML(tree.html)文件的一部分如下所示
jQuery("#treegrid").jqGrid({
url: 'tree.json',
datatype: 'json',
//mtype: 'GET',
colNames: [/* "ID", */"Col 1", "Col 2",.. ],
colModel: [/* {
name: 'id',
index: 'id',
width: 1,
hidden: true,
key: true
}, */{ ...
如果您注意到,我已经指定'tree.json‘作为URL属性来加载树网格。这只是读取一个静态文件来加载带有样例数据的树网格。
http://localhost:8125/问题:现在,当我尝试使用http://localhost:8125/tree.json访问http://localhost:8125/tree.json文件时,会得到一个404未找到的错误。
快速解决方案: --我可以指定文件'tree.json‘的相对路径,它可以工作。
我的HTML文件tree.html和tree.json都位于同一个目录(/tree)中,我从命令提示符(终端)启动node.js服务器,如下所示
tree> node server.js
我想知道在哪里可以放置我的tree.json,以便使我的HTML按预期工作。
请随时要求澄清。
提前感谢
发布于 2012-05-30 10:17:47
你用这条线
var filePath = '.' + request.url;
在你的代码中,这看起来有点奇怪。在'tree.json'
请求的情况下,您可能会使用.tree.json
作为filePath
的值,而不是您可能希望拥有的./tree.json
。我觉得你应该把密码修好。
此外,在'application/json'
扩展的情况下,最好将.json
设置为contentType
变量的值,就像您为'.js'
和'.css'
文件设置'text/javascript'
和'text/css'
一样。
https://stackoverflow.com/questions/10813644
复制相似问题