我正在使用wamp服务器和node.js来运行我的应用程序(server.js),但是当我想执行.php脚本时,我总是遇到错误:
POST http://localhost:8080/login.php 404 (Not Found)
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);});});
Run Code Online (Sandbox Code Playgroud)
在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)
{......
Run Code Online (Sandbox Code Playgroud)
我想问一下,是否需要安装其他工具或其他工具?
谢谢.
Node.js将不会执行您的PHP代码,Apache服务器将执行.据我了解你的问题,你有一个Apache服务器监听端口80和一个监听8080的Node.js服务器,你希望Node.js服务的HTML页面在Apache服务的login.php上执行Ajax帖子.如果此断言为真,那么问题是您的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,
Run Code Online (Sandbox Code Playgroud)
通过
$.ajax({
type: "POST",
url: "http://localhost:80/login.php",
data: "name="+username+"&pwd="+password,
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
您当然希望从实际页面获取服务器地址,您可以在JavaScript中执行此操作:
$.ajax({
type: "POST",
url: window.location.href.replace(/^(https?:\/\/[^\/]+/,'$1:80/') + "login.php",
data: "name="+username+"&pwd="+password,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9597 次 |
| 最近记录: |