【问题标题】:Submitting a contact form with sent status on the same page在同一页面上提交具有已发送状态的联系表
【发布时间】:2019-03-26 23:12:22
【问题描述】:

我正在建立一个投资组合网站,并且在联系表单中,我希望在提交后获得成功/失败响应。在此过程中,我更愿意保持在同一页面上。

我尝试了与该主题相关的其他页面中的其他解决方案,但我不明白为什么它们对我不起作用。由于我是新手,我将不胜感激一个清晰的解释。非常感谢!

我尝试了这个话题下的解决方案:Submit contact form with success/fail alert on same page

我当前的 HTML 代码是;

<form id="contact-form" method="post" action="contact.php" role="form" enctype="text/plain">
                        <div class="messages"></div>
                        <div class="controls">
                            <div class="form-group">
                                <input id="form_name" type="text" name="name" class="form-control" placeholder="Name *" required="required" data-error="name is required.">
                                <div class="help-block with-errors"></div>
                            </div>
                            <div class="form-group">
                                <input id="form_email" type="email" name="email" class="form-control" placeholder="E-mail *" required="required" data-error="Valid email is required.">
                                <div class="help-block with-errors"></div>
                            </div>
                            <div class="form-group">
                                <input id="form_subject" type="text" name="subject" class="form-control" placeholder="Subject">
                                <div class="help-block with-errors"></div>
                            </div>
                            <div class="form-group">
                                <textarea id="form_message" name="message" class="form-control" placeholder="Message for me *" rows="4" required="required" data-error="send a message."></textarea>
                                <div class="help-block with-errors"></div>
                            </div>
                            <input type="submit" name="submit" class="btn btn-send float-" value="Send message">
                            <p class="text-muted"><strong>*</strong> These fields are required.</p>
                        </div>
                        <div class="clearfix"></div>
                    </form>

我希望在提交表单后在同一页面上看到确认或失败报告。它可以在页面的任何位置。我只是想让访问者知道我收到了他们的消息或没有收到。

【问题讨论】:

  • 不要提交表单,而是使用XMLHttpRequest 来检查您的 PHP 文件。
  • 同意,使用 AJAX 是一个很好的方法。
  • 我会看看它是如何工作的,杰克。感谢您的快速信息。
  • 我也会检查 AJAX。我之前将其视为一种解决方案,但无法理解它是如何工作的。让我专注于它。顺便说一句,www.nadirpamuk.com 是我正在建立的网站。如果您检查一下,我将不胜感激。 :)
  • 顺便说一下,AJAX 和 XmlHttpRequest 只是同一技术的不同名称。基本上,它只是让您向服务器发出 HTTP 请求,并从页面中的 JavaScript 代码接收响应,而无需离开页面。 (相比之下,浏览器发出 http 请求的正常方式是当您单击链接、键入 URL 或提交表单时,这总是会导致页面完全刷新,从而破坏之前存在的任何内容。)

标签: javascript php html


【解决方案1】:

简单的例子jQuery版本:

$("#contact-form").submit(function() {
    var name = $("#form_name").val();
    var email = $("#form_email").val();
    // ...other fields
    // and validation if empty or e-mail is valid etc.
    // if validation fails just return false;

    if( !name ) {
        // here You can send message or activate help-block
        return false;
    }

    // if everything correct use for example ajax from jquery
    $.ajax({
        url: '/url/to/receiver',
        type: 'post',
        data: { name: name, .... },
        dataType: 'jsonp',
        success: function( r ) {
            if( r.success ) {
                // message and pass form validation 
                // clear fields, or hide contact form
            }

            if( r.error ) {
                // show error
            }
        }
    });

    return false;
});

记得从服务器 JSON 返回,例如 { success: true } 或 { error: true, msg: "message why failed" }。

但是会好很多,当你将input type=submit改为button,然后make:

$("#contact-form .class-of-input-button").off().on('click', function() { /* rest of the code */ });

【讨论】:

  • 您的 ajax 请求中的实际表单数据不需要 data 字段吗?
猜你喜欢
  • 2019-01-09
  • 1970-01-01
  • 2014-05-18
  • 2010-12-21
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 2012-12-04
  • 2020-09-22
相关资源
最近更新 更多