使用Ionic 2进行POST调用
POST calls with Ionic 2
我一直在努力用Ionic 2实现对ASP.NET API的POST调用。我在一个有用的指南的帮助下完成了GET,但我真的找不到任何类似的POST,直到我在YouTube上看到一段视频。在那个视频的帮助下,我在我的提供商中有了这个方法:
backendlogin() {
if (this.data) {
return Promise.resolve(this.data);
}
return new Promise(resolve => {
var json = JSON.stringify({ email: 'a@hotmail.com', password: 'root' });
var params = 'json=' + json;
var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://insertipadresshere/api/login',
params, {
headers: headers
})
.map(res => res.json())
.subscribe(data => {
this.data = data;
resolve(this.data);
},
error => alert(error),
() => console.log("Finished")
);
});
}
我的GET方法基本上是Ionic在创建提供程序时提供的方法。它们与这段代码类似,除了声明变量和附加头的部分,当然还有http.get而不是post。
这是我用来从页面的控制器调用提供者的函数:
setuplogin() {
this.backend.backendlogin()
.then(data => {
this.data = data;
});
console.log(this.data);
}
现在来谈谈这个问题。如果我了解所有内容,backendLogin()应该在出现故障时显示一个带有错误的警报,它确实这样做了。警报显示"[object object]"。控制台中唯一的东西是一个空日志,可能来自setupLogin(),因为数据是空的。api应该接受一个电子邮件地址和一个密码,并返回一个uID。有人能给我指正确的方向吗?
如果出现错误,我会拒绝承诺:
return new Promise((resolve,reject) => {
var json = JSON.stringify({ email: 'a@hotmail.com', password: 'root'});
var params = 'json=' + json;
var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://insertipadresshere/api/login',
params, {
headers: headers
})
.map(res => res.json())
.subscribe(data => {
this.data = data;
resolve(this.data);
},
error => reject(error),
() => console.log("Finished")
);
});
也就是说,我认为没有必要创造一个原始的承诺。你可以利用toPromise
的可观察性方法:
var json = JSON.stringify({ email: 'a@hotmail.com', password: 'root'});
var params = 'json=' + json;
var headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http.post('http://insertipadresshere/api/login',
params, {
headers: headers
})
.map(res => res.json())
.toPromise();
);
获取错误
setuplogin() {
this.backend.backendlogin()
.then(data => {
this.data = data;
console.log(this.data);
}, error => {
// do something
});
}
最后,您可以直接使用observable而不是返回promise:
var json = JSON.stringify({ email: 'a@hotmail.com', password: 'root'});
var params = 'json=' + json;
var headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http.post('http://insertipadresshere/api/login',
params, {
headers: headers
})
.map(res => res.json());
);
并以CCD_ 2方式订阅:
setuplogin() {
this.backend.backendlogin()
.subscribe(data => {
this.data = data;
console.log(this.data);
},
setuplogin() {
this.backend.backendlogin()
.subscribe(data => {
this.data = data;
console.log(this.data);
}, error => {
// do something with error
});
}
相关文章:
- 使用Ionic 2进行POST调用
- AngularJS$http.post调用返回502(坏网关)错误
- 如何在fetch post调用后管理重定向请求
- 试图理解JQuery/AjaxGet/POST调用
- ajax post 调用导致将数组发送到弹簧休息控制器时出现 400(错误请求)
- 如何使用上一次调用的数据进行第二次 JS .post 调用
- 在 JQuery ajax POST 调用中传递非字符串数据
- angularjs 中的 $http POST 调用返回 HTTP 状态代码 405
- AJAX POST 调用不会向 jQuery 返回任何 JSON 响应
- 如何基于 stdout 和 stderr 验证来自 nodejs 的 angular post 调用
- 如何读取空响应正文的 ajax post 调用的响应标头
- PHP文件未使用$.post调用(我应该使用JQuery版本?)
- 成功的$.Ajax和$.Post调用总是从C#返回失败
- 如何在Meteor.http.post调用中指定标头值
- 试图使用POST调用另一个PHP页面
- jQuery/post():调用的URL不是我所期望的
- 美元.ajax POST调用ServiceStack webservice,参数未到达
- HTTP post调用在angularjs中不起作用
- Ajax post调用返回parsererror
- Angularjs的HTTP POST调用在部署中验证登录失败-返回400错误