0

我有一个包含 jqGrid 插件的简单 HTML 文件。我正在使用 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);

到目前为止,我可以在浏览器中显示我的 HTML 内容 [http://localhost:8125/]

我的部分 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/] 访问我的 HTML 文件时,我收到[http://localhost:8125/tree.json]的404 Not Found错误

快速解决方案:我可以指定文件“tree.json”的相对路径,它可以工作。

我的 HTML 文件tree.htmltree.json都在同一个目录(/tree)中,我像这样从命令提示符(终端)启动我的 node.js 服务器

tree> node server.js 

我想知道我可以在哪里放置我的tree.json以使我的 HTML 按预期工作。

请随时询问任何澄清。

提前致谢

4

1 回答 1

0

你用线

var filePath = '.' + request.url;

在您的代码中,这似乎有点奇怪。可能在您提出要求的情况下'tree.json',您可能想要拥有.tree.json的值filePath而不是值。./tree.json我认为你应该在这里修复代码。

此外,在扩展的情况下,最好设置'application/json'contentType变量的值,.json就像你设置'text/javascript''text/css'for'.js''.css'文件一样。

于 2012-05-30T10:17:47.643 回答