【问题标题】:Meteor: MailChimp Subscription流星:MailChimp 订阅
【发布时间】:2016-02-17 01:31:45
【问题描述】:

我正在尝试在我的流星网站上为 MailChimp 建立时事通讯订阅。我想我已经完成了文档所说的一切,但是当我点击提交按钮时,什么也没有发生。为什么?

这是在我的 html 中:

<template name="MailChimpListSubscribe"> 
    <section class="mailchimp">
        <div class="row">
             <form id="subscribe-footer" class="form-inline">
                <input class="mailchimp-email form-control" type="email" placeholder="ADDRESS@EMAIL.COM" />
                <button class="mailchimp-subscribe btn btn-success"  type="button">SUBMIT</button>
                <div class="message signup"><p>Sign up for our newsletter</p></div>
                <label class="error-message"></label>
                {{#if message}}
                <div class="mailchimp-message message thankyou"><p>You will now receive emails from us</p></div>
                {{/if}}
            </form>
        </div>
    </section>
</template>

在服务器/settings.json 中:

{
    "private": {
        "MailChimp": {
            "apiKey": "myapikey",
            "listId": "listid"
        }
    }
}

在 clien/js/mailchimlistsubscribe.js 中

Template.MailChimpListSubscribe.onRendered (function (){
    jQuery(".message.signup").mouseenter(function(){
        jQuery(this).addClass('disappear');
    })

  var template = this;

  $( "#subscribe-footer" ).validate({
    rules: {
      emailAddress: {
        email: true,
        required : true
      }
    },
    messages: {
      emailAddress: {
        email: "Please use a valid email address!",
        required: "An email address is required."
      }
    },
    errorPlacement: function( error, element ) {
      $( ".error-message" ).text( error[0].innerText );
    },
    success: function( error ) {
      $( ".error-message" ).text( error[0].innerText );
    },
    submitHandler: function() {
      handleSubscriber({
        email: template.find( "[name='emailAddress']" ).value,
        action: 'subscribe'
      });
    }
  });


});   

控制台错误:

handleSubscriber is not defined

【问题讨论】:

  • 能否粘贴您用于 api 调用的 javascript 代码?
  • 尝试 handleSubscriber:function(){email: .....}

标签: javascript meteor


【解决方案1】:

您能否验证以下内容:

  • 您确实安装了包meteor add miro:mailchimp,没有任何错误
  • 控制台上没有任何错误消息
  • 您在 mailchimp 拥有一个有效帐户
  • 您输入了正确的apiKeylistId

除此之外,
尝试改变您使用外部设置的方式...(您的settings.js
您必须创建一个文件名 settings.json(而不是 .js
在您的根项目文件夹中(而不是在您的 server 文件夹中)
在这个文件中,你应该把你输入的代码放在你的server/settings.js
那么您必须使用以下命令启动您的流星应用程序:
meteor --settings=settings.json


-- 编辑--(更改问题后;))

  1. 我猜您正在尝试遵循以下教程:https://themeteorchef.com/recipes/mailing-lists-with-mailchimp/
  2. 在本教程中,他们在文件 /client/modules/handle-subscriber.js 中创建了辅助函数 handleSubscriber
    请确保您的项目中有它
  3. 所有项目代码都在:https://github.com/themeteorchef/mailing-lists-with-mailchimp,您可以下载它,玩它,然后将其集成到您的项目中。
    同一个 URL 有这个项目的演示

您缺少的代码(从我之前提到的 the-meteor-chef 链接中处理)

handleSubscriber = function( subscriber ) {
     Meteor.call( "handleSubscriber", subscriber, function( error, response ) {
         // Handle error or response here.
     });
};

请确认您也拥有他们为项目安装的所有软件包

在 GitHub 上的项目中,.meteor 文件夹中有一个名为 packages 的文件,其中包含项目正在使用的所有包的列表。
这是该文件的内容:(您必须验证是否已安装每个软件包!)

# Meteor packages used by this project, one per line.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
standard-app-packages
underscore
accounts-password
accounts-base
jquery
check
audit-argument-checks
iron:router
themeteorchef:jquery-validation
twbs:bootstrap
meteorhacks:npm
npm-container
themeteorchef:bert
meteorhacks:ssr
fourseven:scss
miro:mailchimp
browser-policy
reactive-var
fortawesome:fontawesome

【讨论】:

  • 1) 我确实安装了这个包。我在包文件中看到它。 2) 控制台说 TypeError: $(...).validate is not a function。 3) 我在 mailchimp 有一个有效的帐户。 4) 正确的 apiKey 和 listID 信息 4) settings.json 是正确的 - 我的帖子中有错字,我在根目录中也有相同的文件,我使用命令启动了应用程序
  • 我发现我没有 jqueryvalidate 插件。现在我添加了,控制台现在给出了 handleSubscriber is not defined 错误
  • 根据这些新信息和您在问题中所做的更改,我添加到我的答案中。希望它现在可以解决您的问题
猜你喜欢
  • 2012-10-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2014-06-16
  • 2015-05-15
  • 2015-12-12
相关资源
最近更新 更多