javascript — перенаправить данные формы в приложении Node в файл PHP

Можно ли каким-либо образом перенаправить данные формы в файл 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>

Когда я нажимаю «Отправить», появляется сообщение «Cannot POST /contact.php». Я знаю, что это как-то связано со мной, используя Express & 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');
});

Я попытался удалить «app.use (bodyParser.urlencoded ())», но все равно выдает ту же ошибку.

Заменили кнопку отправки в форме на якорь и изменив действие формы на «»

<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 & переписать весь php в javascript? , Спасибо.

-1

Решение

Вы можете сделать следующее, чтобы запустить php (убедитесь, что у вас есть сервер, поддерживающий PHP).

  1. В каталоге вашего узла, где у вас есть Server.js создать каталог под названием php
  2. Переместить ваш contact.php в php каталог
  3. установить действие формы для contact.php в каталоге php
  4. в Server.js установить директорию php как статическую app.use(express.static(__dirname + 'php'));

Надеюсь это поможет.

Но пока вы находитесь на узле, используйте экспресс для обработки данных формы с помощью route.post.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector