PHP 联系论坛 - 点击"send" 按钮后如何让它不改变url?
PHP contact forum - After clicking "send" button how to make it not change the url?
我有一个论坛及其页面的一部分,它工作正常,但是当点击发送按钮时,url 总是更改为我的 .php 文件,所以 : (mysite.com/forum.php)
有办法阻止这个吗?并让它将信息发送到电子邮件,仅此而已而不更改 url?我想保留论坛所在的页面。html 因为论坛只是页面上的众多内容之一。
到目前为止,这是我的论坛和 php 代码:(基本)
<form method="post" action="forum.php">
<div class="field name-box">
<input type="text" name="name" id="name" placeholder="Who Are You?"/>
<label for="name">Name</label>
<span class="ss-icon">✔</span>
</div>
<div class="field email-box">
<input type="text" name="email" id="email" placeholder="name@email.com"/>
<label for="email">Email</label>
<span class="ss-icon">✔</span>
</div>
<div class="field msg-box">
<textarea id="message" name="message" rows="4" placeholder="Your message goes here..."/></textarea>
<label for="msg">Msg</label>
<span class="ss-icon">✔</span>
</div>
<input id="submit" class="button" name="submit" type="submit" value="submit" />
</form>
php:
<?php
$email = $_POST['email'];
$name = $_POST['name'];
$message = $_POST['message'];
$from = 'From: Datcroft Website';
$to = 'MyEmail@hotmail.co.uk';
$subject = 'Datcroft Site Message';
$body = "From: $name\n E-Mail: $email\n Message: $message\n";
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
} else {
}
}
?>
有任何指示或帮助吗?我在 Php 和 Ajax 方面真的很菜鸟(我猜 Ajax 将是答案中出现的解决方案)
在此先感谢您!
这可以按原样工作吗?来自 fbo3264 下面的答案。
var Name = $("#Name").text();
var Email = $("#Email").text();
var Message = $("#Message").text();
$(document).ready(function() {
$('#Forum1').submit(function(ev) {
ev.preventDefault();
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax({
type : 'POST', //we use POST to submit the form
url : forum.php, // the url where we want to POST
data:{
Name:Name,
Email:Email,
Message:Message
},
success:function(response)
{
//handle success (show a success modal or someting)
},
error: function(jqXHR, textStatus, errorThrown)
{
//handle error
}
});
});
});
如果您向 forum.php
发送请求,URL 将发生变化。您可以使用 Apache mod_rewrite 更改 URL 以匹配您想要的模式。像这样的一些规则,可以完成这项工作:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .html
我会使用 jQuery 和 ajax,如您所料:
$(document).ready(function () {
// manually submit the form
$('#Forum1').submit(function (ev) {
ev.preventDefault();
var params = {"email": $("#Email").val(), "name": $("#Name").val(),
"message": $("#Message").val(), "submit": true};
$.ajax({
type: 'POST', //we use POST to submit the form
url: 'forum.php', // the url where we want to POST
data: params,
success: function (response)
{
console.log(response);
},
error: function (jqXHR, textStatus, errorThrown)
{
//handle error
}
});
});
});
我有一个论坛及其页面的一部分,它工作正常,但是当点击发送按钮时,url 总是更改为我的 .php 文件,所以 : (mysite.com/forum.php) 有办法阻止这个吗?并让它将信息发送到电子邮件,仅此而已而不更改 url?我想保留论坛所在的页面。html 因为论坛只是页面上的众多内容之一。
到目前为止,这是我的论坛和 php 代码:(基本)
<form method="post" action="forum.php">
<div class="field name-box">
<input type="text" name="name" id="name" placeholder="Who Are You?"/>
<label for="name">Name</label>
<span class="ss-icon">✔</span>
</div>
<div class="field email-box">
<input type="text" name="email" id="email" placeholder="name@email.com"/>
<label for="email">Email</label>
<span class="ss-icon">✔</span>
</div>
<div class="field msg-box">
<textarea id="message" name="message" rows="4" placeholder="Your message goes here..."/></textarea>
<label for="msg">Msg</label>
<span class="ss-icon">✔</span>
</div>
<input id="submit" class="button" name="submit" type="submit" value="submit" />
</form>
php:
<?php
$email = $_POST['email'];
$name = $_POST['name'];
$message = $_POST['message'];
$from = 'From: Datcroft Website';
$to = 'MyEmail@hotmail.co.uk';
$subject = 'Datcroft Site Message';
$body = "From: $name\n E-Mail: $email\n Message: $message\n";
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
} else {
}
}
?>
有任何指示或帮助吗?我在 Php 和 Ajax 方面真的很菜鸟(我猜 Ajax 将是答案中出现的解决方案)
在此先感谢您!
这可以按原样工作吗?来自 fbo3264 下面的答案。
var Name = $("#Name").text();
var Email = $("#Email").text();
var Message = $("#Message").text();
$(document).ready(function() {
$('#Forum1').submit(function(ev) {
ev.preventDefault();
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax({
type : 'POST', //we use POST to submit the form
url : forum.php, // the url where we want to POST
data:{
Name:Name,
Email:Email,
Message:Message
},
success:function(response)
{
//handle success (show a success modal or someting)
},
error: function(jqXHR, textStatus, errorThrown)
{
//handle error
}
});
});
});
如果您向 forum.php
发送请求,URL 将发生变化。您可以使用 Apache mod_rewrite 更改 URL 以匹配您想要的模式。像这样的一些规则,可以完成这项工作:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .html
我会使用 jQuery 和 ajax,如您所料:
$(document).ready(function () {
// manually submit the form
$('#Forum1').submit(function (ev) {
ev.preventDefault();
var params = {"email": $("#Email").val(), "name": $("#Name").val(),
"message": $("#Message").val(), "submit": true};
$.ajax({
type: 'POST', //we use POST to submit the form
url: 'forum.php', // the url where we want to POST
data: params,
success: function (response)
{
console.log(response);
},
error: function (jqXHR, textStatus, errorThrown)
{
//handle error
}
});
});
});