【问题标题】:MailChimp not working with AJAX - PHP script breakingMailChimp 不使用 AJAX - PHP 脚本中断
【发布时间】:2013-06-13 15:53:37
【问题描述】:

我正在尝试构建一个通过 PHP 脚本与 mailchimp API 集成的 ajax 表单。我正在使用以下表单从 AJAX 成功传递变量:

      <div id="mailchimp_form">
        <p>Enter your email address below to get first dibs!</p>
        <form>
         <input type="email" value="" name="EMAIL" placeholder="Enter your email address to get first dibs...">
         <button class="btn">Submit</button>
        </form>
      </div>
    </div>
  </div>
</div>
<script src="http://code.jquery.com/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

  $("#mailchimp_form .btn").click(function (){

    dataString = $("#mailchimp_form form").serialize();

    $.ajax({  
      type: "POST",  
      url: "includes/subscribe.php",  
      data: dataString,  
      success: function(returnval) {  
       alert(returnval);
      }  
    });  

  });

}); 
</script>

我知道这一点,因为当我回显 $_POST["EMAIL"] 时,我会收到回复。当我将变量传递给 API 调用时,这就是我遇到问题的时候。整个脚本就死了,API 没有错误,php 没有错误,绝对没有,我知道它死了,因为在 api 调用后没有回显。奇怪的是,当我使用 $my_email = "test@testemail.com" 运行 API 调用并自行运行 PHP 脚本时,一切正常。所有其他 API 调用也适用于 ajax,listSubscribe 是我唯一遇到的问题。如果我在电子邮件字段中输入非电子邮件,listSUbscribe api 函数会将其报告为错误(API 部分的验证显然也有效),但如果我输入电子邮件,则绝对不会发生任何事情。没有用户添加到列表中,我的收件箱、垃圾邮件或垃圾箱文件夹中也没有任何内容。

任何人都可以给我一个关于问题可能是什么的轻微线索,我完全迷失在这个问题上。 PHP代码如下:

function test($apikey,$listId) {
$api = new MCAPI($apikey);
$my_email = $_POST["EMAIL"];
$merge_vars = array("FNAME"=>'Sichard', "LNAME"=>'Wright');
$api->listSubscribe( $listId, $my_email, $merge_vars );

echo $my_email;
echo $api->errorCode;
}

test($apikey,$listId);

我的包括:

require_once 'MCAPI.class.php'; 需要一次'config.inc.php'; //包含apikey

【问题讨论】:

  • 请求是否到达服务器?查看 chrome 控制台中的网络选项卡,它会为您提供有关 xhr 的一些信息..
  • 开启错误显示/错误报告。不要在黑暗中调试。可能您忘记包含/需要 MC .php 文件,而 new MCAPI() 调用令人讨厌。
  • 我从 mailchimp 的 api 服务器知道他们从未收到请求。但是,如果它的电子邮件不正确,他们会这样做并报告错误
  • @MarcB 我包含 MCAPI.class.php 以及 config.inc.php
  • @mguimard 感谢 XHR 提示,据我所知,当我在表单字段中输入电子邮件地址时,浏览器尝试获取并将变量放入地址栏中,当它是不是它提交 POST 请求的电子邮件。

标签: php jquery ajax mailchimp


【解决方案1】:

阻止表单提交:

$("#mailchimp_form .btn").click(function (e){

// your ajax...

e.preventDefault();
return false;

});

【讨论】:

  • 哦抱歉没注意到e后功能,让我再试一次!
  • 完美,哇应该在 6 小时前在这里发帖,非常感谢
猜你喜欢
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多