gpt4 book ai didi

php - 如何在 node.js 上运行 .php 脚本

转载 作者:可可西里 更新时间:2023-11-01 00:09:40 24 4
gpt4 key购买 nike

我正在使用 wamp 服务器和 node.js 来运行我的应用程序 (server.js),但是当我想执行 .php 脚本时,我总是遇到错误:POST http://localhost:8080/login.php 404(未找到)

server.js

var app = require('express')();
var server = require('http').createServer(app);
var webRTC = require('webrtc.io').listen(server);
var exec = require("child_process").exec;

var port = process.env.PORT || 8080;
server.listen(port);

app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});

app.get('/login.php', function(req, res){
exec("wget -q -O - http://localhost/login.php", function (error, stdout, stderr) {res.send(stdout);});});

index.html 中调用 login.php:

$("#login").click(function(){
username=$("#user_name").val();
password=$("#password").val();
$.ajax({
type: "POST",
url: "login.php",
data: "name="+username+"&pwd="+password,
success: function(html)
{......

我想问一下,是不是需要安装别的工具什么的?

谢谢。

最佳答案

Node.js 不会执行您的 PHP 代码,Apache 服务器会。据我了解你的问题,你有一个 Apache 服务器监听端口 80 和一个 Node.js 服务器监听 8080 并且你希望 Node.js 服务的 HTML 页面在 Apache 服务的 login.php 上执行 Ajax post。如果此断言为真,那么问题是您的 Ajax 请求指向 localhost:8080 而不是 localhost:80。

您必须为 Ajax 请求参数提供一个绝对 URL 以正确指向 Apache 服务器(端口 80),如果您现在这样做,则提供一个相对 URL 将执行对 localhost:8080 的请求,这是您的 Node.js服务器。

因此,替换:

$.ajax({
type: "POST",
url: "login.php",
data: "name="+username+"&pwd="+password,

$.ajax({
type: "POST",
url: "http://localhost:80/login.php",
data: "name="+username+"&pwd="+password,

应该可以解决问题。

您当然想从实际页面获取服务器地址,您可以在 JavaScript 中这样做:

$.ajax({
type: "POST",
url: window.location.href.replace(/^(https?:\/\/[^\/]+/,'$1:80/') + "login.php",
data: "name="+username+"&pwd="+password,

关于php - 如何在 node.js 上运行 .php 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16298161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com