我有下面的代码,它使用AngularJS和Angular Bootstrap Typeahead小部件。问题是它只返回一个错误-属性长度为"undefined"。如有任何帮助,我们将不胜感激。
HTML
<h4>Asynchronous results</h4>
<pre>Model: {{asyncSelected | json}}</pre>
<input type="text" ng-model="asyncSelected" placeholder="Patients loaded via $http" typeahead="result.patient.drug.drugindication for result in getPatient($viewValue)" typeahead-loading="loadingPatients" class="form-control">
<i ng-show="loadingPatients" class="glyphicon glyphicon-refresh"></i>
Javascript
$scope.getPatient = function(val) {
return $http.get('https://api.fda.gov/drug/event.json', {
params: {
search: 'patient.drug.drugindication:' + val
}
}).then(function(response){
//the following console log returns the data just fine
console.log(response.data.results)
return
{
result: response.data.result
}
});
};
错误:
TypeError:无法读取未定义的属性"length"
这意味着如果您在浏览器地址中键入,则服务器的响应不包含请求的数据
https://api.fda.gov/drug/event.json?patient.drug.drugindication=a
您只能看到错误消息
首先,查看此链接https://api.fda.gov/drug/event.json?search=patient.drug.drugindication:ASPIRIN
然后你必须把你的代码改成这个,所以你只需要返回Promise,而不需要使用then(),所以把你的码改成
$scope.getPatient = function(val) {
return $http.get('https://api.fda.gov/drug/event.json', {
params: {
search: 'patient.drug.drugindication:' + val
}
})
};
如果你想使用then(),请遵循以下代码,这意味着返回数据
$scope.getPatient = function(val) {
var data = $http.get('https://api.fda.gov/drug/event.json', {
params: {
search: 'patient.drug.drugindication:' + val
}
});
data.then(function(response){
console.log(response.data.results)
});
return data;
};
如果你想要更多,请遵循下面的模式
https://api.fda.gov/drug/event.json?search=seriousnesslifethreatening:1+AND+patient.drug.medicinalproduct:%22ASPIRIN%22+AND+patient.patientsex:1&limit=10