我正在使用Angular 5,我的下面的功能是将数据发布到服务器
doLogin(){
var link = 'https://www.sportsmanager.us/Ionic/ASPPages/IonicRMLogin.asp?Login=T&O=2';
var myData = JSON.stringify({txtEmailAddress: this.txtEmailAddress,txtPassword:this.txtPassword});
this.http.post(link, myData)
.subscribe(data => {
alert(data['code'])
}, error => {
alert("Oooops!");
});
}
和服务器在以下格式中返回json
{"code":"0","msg":"The email address entered is not assigned to any adult coaches. Please try a different email address or contact your administrator for assistance.", "page":"IonicRMHome.asp"}
当我尝试通过数据['code']获取代码值时。我得到未定义的错误。
答案 0 :(得分:1)
只需执行console.log(data)
,您就会明白为什么会出错。
我的猜测是它是一个json响应,它有data.detail.code
。
答案 1 :(得分:1)
来自服务器的数据总是以字符串形式出现。所以,请在使用
之前解析它尝试
this.http.post(link, myData)
.subscribe(data => {
data = JSON.parse(data);
alert(data['code'])
}, error => {
alert("Oooops!");
});
答案 2 :(得分:0)
根据您的错误消息,您似乎已将错误的电子邮件地址传递给API,但如果您的电子邮件地址正确无误,那么您可以尝试使用以下代码进行检查,因为如果您的API无需使用JSON.stringify
接受Content-type: application/json
:
doLogin() {
const link = 'https://www.sportsmanager.us/Ionic/ASPPages/IonicRMLogin.asp?Login=T&O=2';
const myData = {
txtEmailAddress: this.txtEmailAddress,
txtPassword: this.txtPassword
};
this.http.post(link, myData).subscribe(data => {
console.log(data);
}, error => {
alert("Oooops!");
});
}
如果您的API不接受Content-type: application/json
,那么您必须在POST API调用中添加标头,如下所示:
this.http.post(link, myData, {
headers: new HttpHeaders().set('Content-type', 'Content type accepted by API'),
}).subscribe(data => {
console.log(data);
}, error => {
alert("Oooops!");
});
答案 3 :(得分:0)
我能够通过以下方式完成它:
let dataJSON = JSON.parse(data["_body"]);