【问题标题】:MailChimp AJAX API not calling APIMailChimp AJAX API 不调用 API
【发布时间】:2017-01-09 02:47:15
【问题描述】:

所以我正在尝试从 MailChimp 集成 API,以便在订阅时不会重定向到 MailChimp 网站。我正在使用这个tutorial。每当我尝试订阅时,网站都会显示一条错误消息“哦不,出现问题”。

在该网站上的代码中,这要么意味着 API 调用出现问题,要么 AJAX 函数返回非 200。问题是我在代码中找不到问题。我可能在代码中插入了错误的信息,但我找不到任何东西。

JavaScript:

$('document').ready(function () {
    $('form').submit(function (e) {
        //prevent the form from submitting via the browser redirect
        e.preventDefault();
        //grab attributes and values out of the form
        var data = {
            email: $('#mc-email').val()
        };
        var endpoint = $(this).attr('action');
        //make the ajax request
        $.ajax({
            method: 'POST'
            , dataType: "json"
            , url: endpoint
            , data: data
        }).success(function (data) {
            if (data.id) {
                //successful adds will have an id attribute on the object
                alert('thanks for signing up');
            }
            else if (data.title == 'Member Exists') {
                //MC wil send back an error object with "Member Exists" as the title
                alert('thanks, but you are alredy signed up');
            }
            else {
                //something went wrong with the API call
                alert('oh no, there has been a problem');
            }
        }).error(function () {
            //the AJAX function returned a non-200, probably a server problem
            alert('oh no, there has been a problem');
        });
    });
});

PHP:

<?php
//fill in these values for with your own information
$api_key = 'realapikey-us14';
$datacenter = 'us14';
$list_id = 'reallistid';
$email = $_POST['email'];
$status = 'subscribed';
if(!empty($_POST['status'])){
    $status = $_POST['status'];
}
$url = 'https://'.$datacenter.'.api.mailchimp.com/3.0/lists/'.$list_id.'/members/';
$username = 'apikey';
$password = $api_key;
$data = array("email_address" => $email,"status" => $status);
$data_string = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$api_key");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;
?>

HTML:

<form action="./endpoint.php" method="POST" id="form mailchimp">
            <input type="hidden" name="u" value="VALUEFORLIST">
            <input type="hidden" name="id" value="LISTID">
            <input name="FNAME" class="popupname" type="text" value="" placeholder="Naam:" required/>
            <br>
            <input id="mc-email" name="EMAIL" class="popupemail" type="email" value="" placeholder="Email:" required/>
            <br>
            <input name="action" class="popupsubmit" type="submit" value="Aanmelden" class="submit" /> 
</form>

【问题讨论】:

  • 请也提供HTML部分
  • 我已经添加了 HTML 部分 @MûhámmàdYäsårK

标签: javascript php jquery ajax mailchimp


【解决方案1】:

如果你像bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5dxf-us10一样传递apikey,那么请求将不会成功。

尝试通过跳过连字符后的字符(如bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5dxf)来传递apikey,并检查它是否有效。

在这种情况下,编辑您的 php 代码

$api_key = 'realapikey-us14';

$api_key = 'realapikey';

【讨论】:

  • 不幸的是,这仍然会给我“哦,不,出现问题”错误
  • 当我生成API代码时,它默认给了我us14
  • 您能否将其中一条错误消息更改为“哦,不,出现问题2”并检查显示的是哪个错误?
  • 我刚刚将第二个“非 200”更改为问题 2,它给了我这个错误。所以我猜它与服务器有关?我用的方法还有效吗?
  • 我打开了浏览器控制台,它给了我“jquery.js:9664 POST website.dev/endpoint.php404 (Not Found)”
猜你喜欢
  • 1970-01-01
  • 2017-01-04
  • 2015-08-02
  • 2018-07-01
  • 2012-06-22
  • 2017-11-26
  • 2014-08-04
  • 2018-05-12
相关资源
最近更新 更多