无需重新加载页面即可提交表单

IT技术 javascript php html ajax forms
2021-01-24 13:07:43

我有一个分类广告网站,在展示广告的页面上,我正在创建一个“向朋友发送提示”表单...

因此,任何想要的人都可以将广告提示发送给一些朋友的电子邮件地址。

我猜表单必须提交到 php 页面对吗?

<form name="tip" method="post" action="tip.php">
  Tip somebody: 
  <input 
    name="tip_email"
    type="text" 
    size="30" 
    onfocus="tip_div(1);" 
    onblur="tip_div(2);"
  />
  <input type="submit" value="Skicka Tips" />
  <input type="hidden" name="ad_id" />
</form>

提交表单时,页面会重新加载...我不希望那样...

有没有办法让它不重新加载并仍然发送邮件?最好没有 ajax 或 jquery ......

6个回答

我找到了我认为更简单的方法。如果您在页面中放置了一个 Iframe,您可以将操作的退出重定向到那里并使其显示出来。当然,你什么也做不了。在这种情况下,您可以将 iframe 显示设置为无。

<iframe name="votar" style="display:none;"></iframe>
<form action="tip.php" method="post" target="votar">
    <input type="submit" value="Skicka Tips">
    <input type="hidden" name="ad_id" value="2">            
</form>
想知道为什么这没有被选为答案!省了头疼。
2021-03-20 13:07:43
irishwill200,没有
2021-03-26 13:07:43
我用了 action="about:blank"
2021-03-29 13:07:43
有了这个,您是否仍然可以获取以下值: $_POST["ad_id"]
2021-03-30 13:07:43
这看起来是一个非常好的答案。但是使用这种方法将无法处理不同的错误代码和验证错误。但是对于为某人创建一些示例代码,这可能会派上用场。
2021-03-30 13:07:43

您需要提交 ajax 请求以发送电子邮件而无需重新加载页面。看看http://api.jquery.com/jQuery.ajax/

你的代码应该是这样的:

$('#submit').click(function() {
    $.ajax({
        url: 'send_email.php',
        type: 'POST',
        data: {
            email: 'email@example.com',
            message: 'hello world!'
        },
        success: function(msg) {
            alert('Email Sent');
        }               
    });
});

表单将在后台提交到send_email.php需要处理请求并发送电子邮件的页面。

如果您也包含 HTML,这会是什么样子?
2021-03-16 13:07:43
如果表单仍然刷新,return false;在最后一个右括号之前添加
2021-03-16 13:07:43
send_email.php 应该是“send_email.php”?
2021-03-19 13:07:43
你将如何使用纯 JavaScript 的普通 AJAX 来做到这一点?
2021-03-30 13:07:43
此答案需要 jquery 依赖项。2020 年的现代解决方案是使用 XMLHttpRequest,如本答案所述
2021-03-31 13:07:43

你要么使用 AJAX 要么你

  • 创建 iframe 并将其附加到文档
  • 将 iframe 名称设置为 'foo'
  • 将表单目标设置为“foo”
  • 提交
  • 让表单操作使用“parent.notify(...)”呈现 javascript 以提供反馈
  • 您可以选择删除 iframe
那仍然是Ajax。不是 XHR,但仍然是 Ajax。
2021-03-16 13:07:43
很棒的技巧谢谢。样品使用<form id="myGiswebForm" method="post" action="https://******/saveForm.asp" target="myiframe"><iframe style="display:none;" src="" name="myiframe"></iframe>
2021-04-05 13:07:43

最快和最简单的方法是使用 iframe。在页面底部放置一个框架。

<iframe name="frame"></iframe>

并以您的形式执行此操作。

<form target="frame">
</form>

并使框架在您的 css 中不可见。

iframe{
  display: none;
}
我建议通过 id 或 class 调用 css。
2021-03-14 13:07:43
这是一个巨大的救生员。我有一个非常详细的表单,其中包含 50 多个输入字段,我很害怕每次在开发模式下都必须重新填写它。现在我不必了。强烈推荐此解决方案用于开发目的。
2021-03-15 13:07:43
应该display:none;和不是border:0px尝试编辑,但我的编辑被审稿人拒绝,他们似乎并不在意查看编辑评论。请修改您的答案以修复代码。
2021-04-05 13:07:43

无需重新加载页面即可提交表单,并在同一页面上获取提交数据的结果。

这是我在互联网上找到的一些解决此问题的代码:

1.)框架

当表单被提交时,动作将被执行并针对特定的 iframe 重新加载。

索引.php

<iframe name="content" style="">
</iframe>
<form action="iframe_content.php" method="post" target="content">
<input type="text" name="Name" value="">
<input type="submit" name="Submit" value="Submit">
</form>

iframe_content.php

<?php
$Submit = isset($_POST['Submit']) ? $_POST['Submit'] : false;
$Name = isset($_POST['Name']) ? $_POST['Name'] : '';
if($Submit){
 echo $Name;
}
?>

2.) AJAX

索引.php:

<form >
    <input type="" name="name" id="name">
    <input type="" name="descr" id="descr">
    <input type="submit" name="" value="submit" onclick="return clickButton();">
</form>
<p id="msg"></p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
function clickButton(){
    var name=document.getElementById('name').value;
    var descr=document.getElementById('descr').value;
    $.ajax({
        type:"post",
        url:"server_action.php",
        data: 
        {  
           'name' :name,
           'descr' :descr
        },
        cache:false,
        success: function (html) 
        {
           alert('Data Send');
           $('#msg').html(html);
        }
    });
    return false;
 }
</script>

server_action.php

<?php 
$name = isset($_POST['name']) ? $_POST['name'] : '';
$descr = isset($_POST['descr']) ? $_POST['descr'] : '';


echo $name;
echo $descr;

?>

标签:

我在互联网上搜索了很多次。我正在使用 Jquery,但 Jquery 有时有效,有时无效,所以我认为 ajax 是您的回答中提到的最佳选择。
2021-03-19 13:07:43
@MuhammadAli,很高兴来到这里:)。
2021-03-24 13:07:43
谢谢先生,你懂我的心,坚持下去
2021-03-25 13:07:43