Pra*_*kar 9 javascript servlets typeahead twitter-bootstrap angularjs
我在尝试从AngularUI-Bootstrap实现AngularJS Typeahead时遇到以下错误:(我只是调用一个以JSON格式返回结果的servlet)
TypeError: Cannot read property 'length' of undefined
at http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.11.0.js:3553:24
at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js:10930:81)
at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js:10930:81)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js:11016:26
at Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js:11936:28)
at Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js:11762:31)
at Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js:12042:24)
Run Code Online (Sandbox Code Playgroud)
HTML
<h4>Users from local service</h4>
<pre>Model: {{userList | json}}</pre>
<input type="text" ng-model="userList" placeholder="Users loaded from local database"
typeahead="username for username in fetchUsers($viewValue)"
typeahead-loading="loadingUsers" class="form-control">
<i ng-show="loadingUsers" class="glyphicon glyphicon-refresh"></i>
Run Code Online (Sandbox Code Playgroud)
JS
$scope.fetchUsers = function(val) {
console.log("Entered fetchUsers function");
$http.get("http://localhost:8080/TestWeb/users", {
params : {
username : val
}
}).then(function(res) {
var users = [];
angular.forEach(res.data, function(item) {
users.push(item.UserName);
});
return users;
});
};
Run Code Online (Sandbox Code Playgroud)
Servlet的
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserUtil userUtil = new UserUtil();
List userList = userUtil.fetchUsers();
Iterator userIterator = userList.iterator();
JSONArray users = new JSONArray();
while(userIterator.hasNext()) {
UserDetails userDetails = (UserDetails)userIterator.next();
JSONObject jo = new JSONObject();
jo.put("UserID", userDetails.getUserId());
jo.put("UserName", userDetails.getUserName());
jo.put("UserDescription", userDetails.getDescription());
users.add(jo);
}
response.setContentType("application/json");
response.getWriter().write(users.toString());
}
Run Code Online (Sandbox Code Playgroud)
来自servlet的响应

我提到了以下问题:
但是,我仍然无法弄清楚决议.servlet本身的响应有什么问题吗?或者是别的什么?
mau*_*ycy 11
在第二次查看代码之后我注意到了什么是错的,你必须在这里返回$ http promise,return在$ http之前注意
$scope.fetchUsers = function(val) {
console.log("Entered fetchUsers function");
return $http.get("http://localhost:8080/TestWeb/users", {
params : {
username : val
}
}).then(function(res) {
var users = [];
angular.forEach(res.data, function(item) {
users.push(item.UserName);
});
return users;
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18787 次 |
| 最近记录: |