我正在读“PHP开发者的Node.js”一书。我创建了一个NodeJS Web服务器,它接收请求并给出响应。但每当我访问一个PHP文件将其重新路由到一个JS文件(要求它)时,我的浏览器会自动下载PHP文件。
这是我的JS代码,根据该代码,它还会下载JS文件(例如,当我访问localhost:1337 / first.njs时)
var http = require('http');
var url = require('url');
var file = require('./first.njs');
http.createServer(function(req, res) {
if(url.parse(req.url).pathname == 'first.php')
file.serve(req, res);
else
res.end('The file doesn\'t exist');
}).listen(1337, '127.0.0.1');
console.log('Server is running on 1337');
如果重要的话,这是我的PHP文件
<?php
echo "ASD";
?>
我知道这感觉真是一个非常愚蠢的问题,但我无法弄清楚为什么会这样。
浏览器测试:Chrome和Firefox。
更新的 无法弄清楚确切的问题也无法复制问题 - 但这是我的最新代码,如果有人想将所请求的PHP文件重新路由到JS文件并提供它(JS文件)
var http = require('http');
var url = require('url');
var file = require('./first.njs');
http.createServer(function(req, res) {
if(url.parse(req.url).pathname == '/first.php')
file.serve(req, res);
else
res.end('File not found');
}).listen(1337, '127.0.0.1');
console.log('Server is running on 1337');
答案 0 :(得分:2)
如果要检查是否可以呈现PHP页面而不实际将其呈现到页面,则可以在JavaScript / jQuery中使用ajax请求。
$.ajax({
type: "POST",
url: 'YOUR PHP FILE PATH',
success: function (dataCheck) {
// file was accessed
}
});
在您的成功功能中,您可以输出已成功访问PHP文件。
答案 1 :(得分:1)
一旦你对节点有了更好的处理,你可能想要使用expressjs,看看expressjs routing。
app.get('/first.php', function(req, res){
res.send('You accessed first.php!');
});
如果您想显示php,可以使用php-node在node.js中呈现php。
答案 2 :(得分:0)
您似乎没有配置Apache(或其他服务器)或PHP。请求必须首先转到PHP脚本。所以你必须点击localhost:80 / file.php,然后在PHP脚本中重定向到localhost:1337 / file.js。
对于你想要做的更好的建议实际上是从Apache到Node.js的反向代理,然后让Node.js读取路径。