我正在将基于node.js的应用程序部署到IBM的Bluemix,并为他们提供的一个示例添加了一些功能。我添加了一个额外的javascript文件,它对PHP进行了ajax调用,但由于我的路径不正确,因此找不到PHP文件。我已经尝试将文件放在任何地方,但它只是没有找到。我正在考虑(作为一个完整的节点noobie),我错过了一些神秘的配置或什么。
在主目录(以及其他内容)中,结构如下:
-- views
- index.ejs (this is the main displayed code)
-- public
- js
- custom.js (my added file)
- all the other necessary js files
- css
- img
- php - I added this directory
- get-twitter.php - I added this...custom.js makes an ajax call here
在custom.js中,我有这个:
$("#get-twitter").click(function(event) {
handle = $('#twitter-handle').val();
$.ajax({
url: 'php/get-twitter.php',
type: 'POST',
dataType: 'JSON',
data: {
handle: handle,
},
success: function(data) {
console.log(data);
$.each(data, function(index, val) {
console.log(val.text);
});
}
});
});
当我尝试进行此调用时,找不到该文件,但路径是这样的:https://myapp.mybluemix.net/php/get-twitter.php
它应该在views/php/get-twitter.php
中,但我猜这是一个配置问题我的结局。
我已经尝试了每次迭代:url: 'php/get-twitter.php',
并将PHP文件放在每个目录中,但没有任何工作。
我在这里缺少什么?
答案 0 :(得分:1)
无法从节点运行PHP脚本。您需要设置一个支持PHP的服务器,并在那里提出您的请求。一种选择是Apache。
实际上,您可能不希望为运行单个PHP脚本而设置整个服务器。更合理的解决方案是将PHP脚本移植到Node上运行。在NPM上有许多用于twitter API集成的包(例如twitter模块)。
答案 1 :(得分:1)
如果服务器安装了PHP,那么您可以尝试使用exec使用命令行解释器运行PHP文件并获取输出。显然,您需要重构代码以使用shell($args
)传递的参数,并显示将由节点捕获的JSON响应。例如:
exec('php -f /project/file.php', function (err, out) {
if (!err) {
const output = JSON.parse(out);
// do something with the object
}
});
正如@positlabs所说,保持简单并将脚本移植到JavaScript。