php - Parse input value to php variable on submit (clashing with other scripts running)
问题描述
I have a form that's doing various other things on top of what I want it to do, not an ideal situation but I want to tag on some extra things.
Is it possible to parse the email input field into a php variable on submit without breaking what's currently there? And then fire the php below the form?
<form action="/event" method="POST">
<input type="hidden" name="event" value="mc_newsletter_add">
<input type="hidden" name="data[source]" value="newsletter">
<input checked=checked type="checkbox" name="data[newsletter_onetime]" id="newsletter_onetime" class="newsletter-optins">
<input checked=checked type="checkbox" name="data[promos]" id="promos" class="newsletter-optins">
<input class="modal-newsletter-input" id="EmailAddress" name="data[customers_email_address]" placeholder="Enter your email here" required="required" type="email" value="<?php if(isset($_GET['email'])){echo $_GET['email'];}?>" aria-required="true">
<input class="modal-newsletter-signup" id="newslettersignup" onclick="register_signup();" name="Submit" type="submit" value="Yes, sign me up" />
</form>
Here's the php:
<?php $sib_tracking = new SIB_Tracking();
$email = (submitted email to go here);
$event = "marketing";
$result = $sib_tracking->track_event($email, $event); ?>
解决方案
Doesn't sure whats your register_signup()
do. I assume it's a hook of some kind.
So what you can do, on click event - prevent form submitting. Send form data via $ajax
request, then call your hook register_signup()
, then remove the form from page to prevent further duplicated submitting.
<form action="/event" method="POST" id="signupForm">
<input type="hidden" name="event" value="mc_newsletter_add">
<input type="hidden" name="data[source]" value="newsletter">
<input checked=checked type="checkbox" name="data[newsletter_onetime]" id="newsletter_onetime" class="newsletter-optins">
<input checked=checked type="checkbox" name="data[promos]" id="promos" class="newsletter-optins">
<input class="modal-newsletter-input" id="EmailAddress" name="data[customers_email_address]" placeholder="Enter your email here" required="required" type="email" value="<?php if(isset($_GET['email'])){echo $_GET['email'];}?>" aria-required="true">
<input class="modal-newsletter-signup" id="newslettersignup" name="Submit" type="submit" value="Yes, sign me up" />
</form>
<script>
$("#signupForm").submit(function(e) {
e.preventDefault();
var form = $(this);
$.ajax({
type: "POST",
url: form.attr('action'),
data: form.serialize(),
success: function(data)
{
console.log(data); //data contain response from your php script
register_signup();
form.replaceWith("<div>You signed in</div>"); //This is optional - remove your form from page
}
});
});
</script>
Be aware - I add id
to <form>
tag, and remove onClick
handler and submit button.
Hope that what you looking for.
推荐阅读
- php - 我需要知道如何使用 laravel 中的资源控制器将数据从数据库检索到多个页面
- c++ - 如何将 C++20 约束的多个返回类型要求合并为一个返回类型要求?
- gitlab-ci - CypressError: `cy.visit()` 尝试加载失败: https://dev-eccc.env.xxxx.com/ 通过 Gitlab CI 作业
- python - 如何在 Pandas DataFrame 中将可变大小的基于字符串的列拆分为多列?
- mongodb - 如何在mongodb中获取每个组的最新记录?
- android - 华为开发者控制台:如何将应用从一个开发者账户转移到另一个开发者账户?
- r - 如何在我的 R 脚本中指定 pandoc 路径?
- r - 如何使用交叉验证来确定使用训练、验证和测试集的最终模型
- python - 我无法连接到 mqtt 中的代理,我想知道为什么?
- wordpress - HTML 表单发布到远程目标 - Google Analytics 推荐