【发布时间】:2016-11-04 15:52:41
【问题描述】:
我正在尝试在 CMS 页面中提交表单,并且不希望在处理 php 邮件脚本后加载新页面。相反,我需要在不重新加载页面或转到其他页面的情况下显示单行成功消息(而不是警报弹出框)。
这是我拥有的代码,我的理解是 event.preventDefault 应该允许留在同一页面上,$("#contactResponse").html(data); 应该将成功消息放在同一页面上。
这是我应该接收成功消息的表单上方的 div 标签(我也尝试将它放在我的表单之后):
<div id="contactResponse"></div>
这是我的表单标签:
编辑:也包括我的表单代码:(div 类的东西来自其他人所做的自定义 css)
<form id="contactForm" name="contactForm" method="post" action="/myemail.php">
<div class="form-group"><input class="form-control" name="email" type="email" placeholder="Email Address" /></div>
</div>
<div class="col-sm-4">
<div class="form-group"><input class="form-control" name="question" type="text" placeholder="What is your question?" /></div>
</div>
<div class="form-group"><input class="btn btn-warning btn-block" type="submit" value="Request Information"></div>
</form>
这是我的表单和 div 标签上方的脚本:
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
$("#contactForm").submit(function(event) {
event.preventDefault();
var $form = $(this),
$submit = $form.find('button[type="submit"]'),
email_value = $form.find('input[name="email"]').val(),
message_value = $form.find('input[name="question"]').val(),
url = $form.attr('action');
var posting = $.post(url, {
email: email_value,
question: message_value
});
posting.done(function(data) {
$("#contactResponse").html(data);
});
});
</script>
电子邮件有效,但 php 脚本在服务器上,它会将我带到另一个页面。
谁能给我一些建议/建议。
谢谢
【问题讨论】:
-
请发布完整的 HTML 表单。您是否在浏览器的控制台中遇到任何错误?
-
如果 JS 位于 HTML 主体之上,那么您需要将 jQuery 代码包装在 document.ready 处理程序中:
$(function() { /* your code here... */ });。目前您的表单正在以标准方式提交,不涉及 AJAX -
谢谢j08691,我已经添加了表单代码谢谢Rory,你能告诉我如何包装吗,抱歉我不知道
-
@Rory:我尝试将 JS 放在底部,即在我的表单和部分标签之后,但它仍然相同:(
-
所以从其他一些建议中,我也尝试过包含在这样的函数中: $(document).ready(function() { OR $(function(){ 我在带有“ }) ”的脚本标记但是没有运气... :( 下面是开始的样子:
标签: javascript jquery