错误:$ injector:undef未定义angularjs中的值

时间:2017-02-03 06:50:28

标签: angularjs

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;
});

2 个答案:

答案 0 :(得分:0)

需要注意的事项:

  • 不要在angularjs服务中使用jQuery ajax $.ajax - 而是使用$http,因为它将自己处理摘要周期。阅读:https://docs.angularjs.org/api/ng/service/ $ http
  • 当您正在进行ajax调用时,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;
});