首页 > 解决方案 > 使用 Ajax 触发 php 块

问题描述

我正在将一些表单数据解析为 Ajax,并希望触发一段 php 代码。

因此,在我目前在提交时提醒电子邮件地址的代码中,我想将其解析到newsletter_signup函数中并在最底部运行 php 代码块,表单中的电子邮件地址进入 php.ini 文件。

我怎样才能做到这一点?

  <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);
        var email = $("#EmailAddress").val();

        $.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();
                   newsletter_signup(email);
                   form.replaceWith("<br /><p>Thanks for signing up!</p>");
               }
             });

    });

    function register_signup(){
      ga( 'send', 'event', 'Newsletter Sign Up', 'submit' );
    }

    function newsletter_signup(email){

      $('#signupForm').load(
          "newsletter-call.php",
          {
              'key1': email,
          }
      );

    }
  </script>

然后这会调用一个名为 newsletter-call.php 的 php,其中包含以下内容:

<script type="text/javascript">
alert("Hit the page");
</script>
<?php $sib_tracking = new SIB_Tracking();
$email = $_POST['key1'];
$event = "marketing";
$result = $sib_tracking->track_event($email, $event); ?>

标签: phpjqueryajax

解决方案


您可以简单地传递电子邮件地址。

newsletter_signup(email);

然后继续使用它作为参数。

function newsletter_signup(email) {
   console.log(email);
}

至于在 PHP 中使用它,您可以使用 ajax 请求执行 php 操作,然后再将其输出到 JavaScript 函数。


推荐阅读