提交 mailchimp subscribe php 后我有一个空白页

Posted

技术标签:

【中文标题】提交 mailchimp subscribe php 后我有一个空白页【英文标题】:I have a blank page after submitting mailchimp subscribe php 【发布时间】:2016-05-28 08:52:03 【问题描述】:

我使用以下 html 代码使用 mailchimp API 在我的 mailchimp 帐户列表中提交用户电子邮件。

表格代码:

    .....

    <form id="signup-form" action="php/newsletter-subscribe.php" method="post">
        <input type="email" name="email" id="email" placeholder="Email Address" />
        <br>
        <input type="submit" value="Go!" onclick="wating()" />
    </form>

    ......

时事通讯订阅 PHP 代码:

require_once 'mailchimp/MailChimp.php';
use \DrewM\MailChimp\MailChimp;

// Email address verification
function isEmail($email) 
    return filter_var($email, FILTER_VALIDATE_EMAIL);


if($_POST) 
    $mailchimp_api_key = 'xxxxxxxxxxxxxxxxxxxxx-xx'; // enter your MailChimp API Key
    $mailchimp_list_id = 'xxxxxxxxxx'; // enter your MailChimp List ID

    $subscriber_email = addslashes( trim( $_POST['email'] ) );
    if( !isEmail($subscriber_email) ) 
        echo '<script type="text/javascript">swal("Error!", "Please try again.", "error")</script>';
     else 
        $array = array();
        $MailChimp = new MailChimp($mailchimp_api_key);
        $result = $MailChimp->post("lists/$mailchimp_list_id/members", [
            'email_address' => $subscriber_email,
            'status'        => 'subscribed',
        ]);

        if($result == false) 
            $array = '<script type="text/javascript">swal("Error!", "Please try again.", "error")</script>';
         else 
            $array = '<script type="text/javascript">swal("Great!", "Your email has been subscribed", "success")</script>';
        
        echo json_encode($array);
    

问题是在我提交表单后,我得到 空白页 没有任何错误日志,并且电子邮件添加到我的 mailchimp 帐户没有任何错误。

我尝试将 echo javascript in line 22, 35 and 38 更改为另一个 java 脚本警报,例如 alert("Text Here");,它可以工作,除了我得到相同的东西 空白页

如何解决这个问题并在同一个 html 表单页面中回显 javascript 警报而不重定向到空白页面?

【问题讨论】:

如何检查页面是否为空白?你看过实际来源吗? @PeeHaa 在我提交表单后,它会将我重定向到带有空白页的 newsletter-subscribe.php,它应该在第 22、35 和 38 行回显 javascript 警报,而不会将我带到 newsletter-subscribe.php (空白页) 这个脚本只生成小的 javascript 代码。没有更多了。在浏览器中,您将看到空白页 - 这是正确的。 @newman 那么如何在同一个 html 表单页面中使用 php 运行 javascript 警报?这就是我现在需要做的。 你没有回答我的问题。 【参考方案1】:

首先你要设置:

$array = array();

但后来,你这样做了:

    if($result == false) 
        $array = '<script type="text/javascript">swal("Error!", "Please try again.", "error")</script>';
     else 
        $array = '<script type="text/javascript">swal("Great!", "Your email has been subscribed", "success")</script>';
    
    echo json_encode($array);

换句话说,您正在将数组更改为字符串。 尝试将代码更改为:

    if($result == false) 
        $array = array('<script type="text/javascript">swal("Error!", "Please try again.", "error")</script>');
     else 
        $array = array('<script type="text/javascript">swal("Great!", "Your email has been subscribed", "success")</script>');
    
    echo json_encode($array);

另外,我会避免在那里使用&lt;script type="text/javascript"&gt;,我只会返回一个正确的 json 响应。然后,您使用 ajax (jquery) 调用此文件,解码 json 并显示警报。

也许这样的事情会给你一个想法: http://labs.jonsuh.com/jquery-ajax-php-json/

【讨论】:

以上是关于提交 mailchimp subscribe php 后我有一个空白页的主要内容,如果未能解决你的问题,请参考以下文章

TypeError: email.indexOf 不是 React 中使用 react-mailchimp-subscribe 的函数

Gibbon Gem Mailchimp 表单问题

使用带有 AJAX 的 API 向 Mailchimp 发送/包含“名称”字段

Mailchimp 表单未提交

Rails MailChimp API 组

无法向 MailChimp 提交数据