ajax的响应类似于["99636941","74167247"]
。但是angularjs不接受这些值。答案还可以。如果我声明与静态相同的响应,那么它正常工作。
app.factory("States", function(){
var states;
$.ajax({
url:'php/usersList.php',
type:'post',
success:function(data,status)
{
states = data;
console.log(states);
},
error:function(xhr,desc,err)
{
console.log(xhr);
console.log("Details: "+ desc + "\n error:"+err);
}
});
return states;
});
答案 0 :(得分:0)
需要注意的事项:
$.ajax
- 而是使用$http
,因为它将自己处理摘要周期。阅读:https://docs.angularjs.org/api/ng/service/ $ http return states
将在您的ajax成功事件之前执行 - 尝试在javascript / angular js中查看Promises。 你可以重构这个方法,如:
app.factory("States", function($http){
var getStates function(){
return $http.post('php/usersList.php');//ideally this should be a GET method
};
return {
getStates: getStates
}
});
在你称之为这种方法的地方:
var states;
States.getStates().then(function(data){
states = data;
})
答案 1 :(得分:0)
如果我们让它更简单,你可以通过以下方式实现。
app.factory("States", function($http){
var factory={};
factory.getStates=function($http){
return $http({
method:'GET',
url:'your URL'
});
};
/*similarly write as many functions as you need and then simply return the factory var*/
return factory;
});