困惑于从AJAX发送到我的Express服务器的请求path
我有一个Node.js快速服务器的基本设置
我正在尝试使用res.sendFile
服务html文件,使用这个路由处理程序:
router.get('/:run_id/:test_num',function(req,res,next){ var runId = req.params.run_id; var testNum = req.params.test_num; res.sendFile(path.resolve('results',runId,testNum),{ maxAge:'58h' }); });
在我的app.js文件中,我有这个中间件
app.use('/results', require('./routes/results'));
问题是请求被路由如下:
pathname: '/results/results/1450830953375/test6.txt', path: '/results/results/1450830953375/test6.txt', href: '/results/results/1450830953375/test6.txt'
所以问题在于它是/results/results/
而不是just /results
我正在使用RequireJS和包含要请求的文件的数据的模块如下所示:
define('SumanTestFiles',function(){ return new Object(["results/1450830340344/test5.txt","results/1450830340344/test6.txt"]); });
然后循环遍历每个文件path并使用jQuery / AJAX从服务器请求它:
define(['SumanTestFiles'],function(stf){ stf.forEach(function (testPath) { $.get(testPath).done(function (msg) {...
所以你可以看到testPaths没有被篡改,他们毫无疑问只是简单的“结果/ 1450830340344 / test5.txt”,或者类似的东西。
所以我的问题是,为什么path显示在我的服务器与path中的两个相邻的'结果'string实例?
这没有什么意义,因为请求应该是
/results/1450830953375/test6.txt
不
/results/results/1450830953375/test6.txt
有人有主意吗? 谢谢
这对我来说是新的,因为我对web开发相当陌生
简短的答案是,而不是这个:
define('SumanTestFiles',function(){ return new Object(["results/1450830340344/test5.txt","results/1450830340344/test6.txt"]); });
我需要这样做
define('SumanTestFiles',function(){ return new Object(["/results/1450830340344/test5.txt","/results/1450830340344/test6.txt"]); });
否则,我的服务器的AJAX请求path将相对于search栏中的URL,而不是绝对的。 神圣的废话,这是令人困惑的。