如何发送邮件请求在Ionic 2节点服务器运行在本地主机?

在离子我用服务提供商访问http。

Service.ts文件是这样的。 数据是一个json对象。

import { Injectable } from '@angular/core'; import { Http,Headers } from '@angular/http'; import 'rxjs/add/operator/map'; @Injectable() export class Service { constructor(public http: Http) { console.log('Hello Service Provider'); } addNewPlace(data:any){ let headers = new Headers(); headers.append('Content-Type', 'application/json'); console.log(data); this.http.post("http://127.0.0.1:3000/postData/",data); } } 

我的节点app.js文件是这样的

 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.get('/',function(req,res){ res.send("Hello_World"); }); app.post('/postData',function(req,res){ console.log(">>>> "+req.body); res.json('Thank You'); }); app.listen(3000,function(){ console.log('Server running at http://127.0.0.1:3000/'); }); 

我错在哪里? 我想从服务脚本发送数据对象到节点服务器并进行控制。 但是这段代码没有任何反应。 也没有任何错误!

我的节点服务器在端口3000上运行。
我的离子程序运行在8100端口上。

问题解决了! 问题在于CORS。

我安装了Cors并将其导入到我的节点文件中。 现在它工作完美。

 var cors = require('cors'); app.use(cors()); 

将以上代码添加到我的节点文件中。

你可以使用下面的方法。

您的页面组件。

 export class MyPage { constructor(public service : Service){} // entry method myPostData(): void { this.service.postData("http://127.0.0.1:3000/postData/",data) } } 

你的服务类。

 @Injectable() export class Service { //post data postData(url: string, body: string): Observable<your-data-type> { let headers = new Headers(); headers.append('content-type', 'application/json'); let options = new RequestOptions({ headers: headers }); return this.http.post(url, body, options) .map(this.extractData) .catch(this.handleError); } //to extract data private extractData(res: Response) { let body = res.json(); return body || {}; } //to handle error private handleError(error: Response | any) { let errMsg: string; if (error instanceof Response) { const body = error.json() || ''; const err = body.error || JSON.stringify(body); errMsg = `${error.status} - ${error.statusText || ''} ${err}`; } else { errMsg = error.message ? error.message : error.toString(); } console.error(errMsg); return Observable.throw(errMsg); } }