使用Node& amp;有什么方法可以让表单数据重定向到同一文件夹中的PHP文件表达。
HTML
<form action="contact.php" method="post" role="form">
<div class="form-group">
<input type="text" class="form-control input-lg" id="nameinput" placeholder="Subject" name="contact-subject">
</div>
<div class="form-group">
<input type="email" class="form-control input-lg" id="emailinput" placeholder="Email" name="contact-email">
</div>
<div class="form-group">
<textarea class="form-control" rows="6" name="contact-message"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn btn-outline-white btn-big">Submit</button>
</div>
</form>
当我点击提交时,它给了我&#34;不能POST /contact.php"。我知道这与我使用Express&amp; amp; Bodyparser。
Server.js
var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded());
app.use(express.static(path.join(__dirname, './client')));
app.listen(8000, function() {
console.log('cool stuff on: 8000 check if right server');
});
我已经尝试取出&#34; app.use(bodyParser.urlencoded())&#34;,但它仍然会出现同样的错误。
已使用锚点替换表单中的提交按钮,并将表单操作更改为&#34;&#34;
<a href="contact.php" class="btn btn-outline-white btn-big">Submit</a>
只需在点击提交时下载contact.php文件。
这是我试图访问的PHP文件。
<?php
// get posted data into local variables
$EmailTo = "ENTER EMAIL";
$Subject = "Message via Portfolio";
$Name = Trim(stripslashes($_POST['contact-name']));
$EmailFrom = Trim(stripslashes($_POST['contact-email']));
$Message = Trim(stripslashes($_POST['contact-message']));
// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (!$validationOK) {
print "<h2>There was an error. Please try to send the message again. </h2>";
exit;
}
// prepare email body text
$Body = "You've got this email from your website:";
$Body .= "\r\n";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\r\n";
$Body .= "Email: ";
$Body .= $EmailFrom;
$Body .= "\r\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\r\n";
// send email
$success = mail( $EmailTo, $Subject, $Body );
//redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=index.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=index.html\">";
}
?>
有没有办法做到这一点,而不是使用app.post&amp;用javascript重写整个php? 。谢谢。
答案 0 :(得分:0)
您可以执行以下操作来运行php(确保您有一台能够运行PHP的服务器)。
Server.js
创建名为php
contact.php
移至php
目录Server.js
中通过app.use(express.static(__dirname + 'php'));
希望这有帮助。
但是当你在节点上时,使用express来使用route.post处理表单数据。