【发布时间】:2020-07-29 17:28:59
【问题描述】:
我有一个简单的提交按钮,其中有一个字段供访问者输入电子邮件地址。当他们点击按钮时,它应该将他们的电子邮件添加到 csv 文件中,然后显示弹出感谢消息。
目前,当用户单击按钮时,唯一会发生的情况是 URL 更改并重新加载相同的页面,但不会将任何内容添加到 csv 文件中,并且不会出现弹出感谢消息。
$('#contacts_form').on('submit', function(){
var msg = '';
var error = 0;
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
if (!pattern.test($.trim($('#contacts_form #mail').val()))) {error = 1;msg = msg + '\n - Your E-mail';}
if (error){
$('#mail').addClass('active');
return false;
}else{
var url = 'import.php';
var email = $.trim($('#contacts_form #mail').val());
$.post(url,{'email':email},function(data){
$('#thank-you-subscribe').addClass('active');
$('#mail').removeClass('active');
$('#mail').attr('value','');
$('#mail').val('');
});
return false;
}
return false;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-6 margin-top-50">
<form id="contacts_form" method="post">
<input type="text" id="mail" name="email" placeholder="Email address" value="" />
<div class="submit-button"><input type="submit" value="Subscribe" /></div>
</form>
</div>
<div class="full-screen-popup" id="thank-you-subscribe">
<div class="close-layer"></div>
<div class="simple-article center-align">
<a class="close-button">+</a>
<h1>Thank You!</h1>
<h4>We will notify you about any updates, stay tuned!</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</div>
</div>
这里是相关的php文件
<?
$email = strip_tags(trim($_POST['email']));
$file = 'email.csv';
$current = file_get_contents($file);
$current .= $email.';'."\n";
file_put_contents($file, $current);
?>
如果我将 (action="import.php") 添加到 HTML 代码中(将这一行从 form id="contacts_form" method="post" .....更改为 form id="contacts_form" action=" import.php" method="post" ),然后它成功地将电子邮件地址添加到 csv 文件中。但是,当我进行此更改时,点击提交后会发生什么,而不是停留在同一页面并打开弹出式感谢消息,而是将站点访问者带到一个空白的 import.php 页面。
有什么建议吗?
======
Google Chrome 控制台中的浏览器错误
[URL]/:10 Mixed Content: The page at 'https://URL' was loaded over HTTPS, but requested an insecure stylesheet 'http://fonts.googleapis.com/css?family=Open+Sans:400,800&subset=latin,latin-ext'. This request has been blocked; the content must be served over HTTPS.
global.js:86 Uncaught TypeError: $(...).FlipClock is not a function
at HTMLDocument.<anonymous> (global.js:86)
at j (jquery-2.1.3.min.js:2)
at Object.fireWith [as resolveWith] (jquery-2.1.3.min.js:2)
at Function.ready (jquery-2.1.3.min.js:2)
at HTMLDocument.I (jquery-2.1.3.min.js:2)
contentscript.js:3 Content script called
URL/:1 Mixed Content: The page at 'https://URL/' was loaded over HTTPS, but requested an insecure stylesheet 'http://fonts.googleapis.com/css?family=Open+Sans:400,800&subset=latin,latin-ext'. This request has been blocked; the content must be served over HTTPS.
【问题讨论】:
-
您的页面中是否包含 jQuery?您在浏览器的控制台中遇到什么错误?
-
您好 j08691,非常感谢您的快速回复!在 chrome 中,我收到了几个混合内容错误和一个未捕获类型错误,我会将它们添加到原始帖子中,因为它超出了内容的字符限制
-
也是的,我在 html 页面的底部添加了 jquery
-
您是否尝试在表单提交的提交事件上使用 event.preventDefault() i mean this?在我看来,只是重新加载的页面就像您的 javascript 没有被执行,因为提交会使页面重新加载
-
感谢 j4g0!不,我还没试过。我会调查这个
标签: javascript php html submit-button