我需要通过组件帖

时间:2016-02-03 15:05:07

标签: angularjs angular mailchimp angular-http

我需要通过组件帖子对邮件黑猩猩订阅列表发出http请求

我已经阅读了邮件黑猩猩文档,无法在此找到任何内容。 我也尝试了他们的邮件黑猩猩嵌入形式在一个有角度的2 html5视图,但这不起作用的一些奇怪的原因。

所以我结果是对订阅列表做了一个http请求,而我却无法正常工作。

我正在使用打字稿,angular2和邮件黑猩猩

到目前为止,这是我的代码:

  subscribe = () => {
        var url = "https://mysubscriptionlist.us10.list-manage.com/subscribe/post?u=b0c935d6f51c1f7aaf1edd8ff&id=9d740459d3&subscribe=Subscribe&EMAIL=" + this.email;    
        this.jsonp.request(url).subscribe(response => {
           console.log(response);
        });   
  }

这是我目前在Chrome中的控制台日志错误:

未捕获的SyntaxError:意外的标记<

1 个答案:

答案 0 :(得分:4)

我终于找到了解决问题的方法。您需要使用Angular2的Jsonp支持。

您的地址通过向您的网址添加c查询参数并按https://mysubscriptionlist.us10.list-manage.com/subscribe/post切换https://mysubscriptionlist.us10.list-manage.com/subscribe/post-json来支持Jsonp。您需要在其中加入JSONP_CALLBACK值(请参阅此问题:https://github.com/angular/angular/issues/5613)。

在这种情况下,您将获得以下响应有效负载:

JSONP_CALLBACK (
{
  "result": "success",
  "msg": "Almost finished... We need to confirm your email address. To complete the subscription process, please click the link in the email we just sent you."
}
)

在调用bootstrap函数时注册了JSONP_PROVIDERS:

import {bootstrap} from 'angular2/platform/browser'
import {JSONP_PROVIDERS} from 'angular2/http'
import {AppComponent} from './app.component'

bootstrap(AppComponent, [ JSONP_PROVIDERS ]);

然后,您可以使用从构造函数中注入的Jsonp类的实例来执行请求:

import {Component} from 'angular2/core';
import {Jsonp} from 'angular2/http';

@Component({
  selector: 'my-app',
  template: `
    <div>
      Result: {{result | json}}
    </div>
  `
})
export class AppComponent {
  constructor(jsonp:Jsonp) {
    var url = 'https://mysubscriptionlist.us10.list-manage.com/subscribe/post-json?u=(...)&subscribe=Subscribe&EMAIL=my@email.com&c=JSONP_CALLBACK';
    jsonp.request(url, { method: 'Get' })
     .subscribe((res) => {
       this.result = res.json()
     });
  }
}

请参阅此plunkr了解工作样本:http://plnkr.co/edit/dqreqBL6kyNkR8Z2wgGR?p=preview