ajax调用在角度js中不起作用

时间:2015-02-07 20:40:55

标签: ajax angularjs angularjs-scope

我的情况如下:

我有一个文本框和按钮,每当我在文本框中添加某些内容时,我想在表格中添加文本,我的代码如下:

 var app = angular.module('app', []);
app.factory('Service', function() {
    var typesHash = [ {
        id :1,
        name : 'lemon',
        price : 100,
        unit : 2.5
    }, {
        id : 2,
        name : 'meat',
        price : 200,
        unit : 3.3
    } ];

    var localId = 3;

    var service = {
        addTable : addTable,
        getData : getData,


    };
    return service;
    function addTable(name) {
        typesHash.push({id:localId++, name:name, price:100,unit:1});
    }
    function getData() {
        return typesHash;
    }
});
app.controller('table', function(Service) {
    //get the return data from getData funtion in factory
    this.typesHash = Service.getData();
    //get the addtable function from factory 
    this.addTable = Service.addTable;
});

并且plnkr如下:

plnkr

现在你可以看到我在表格的文本中添加了一切,一切正常但现在我想在文本框中添加任何内容,我也希望从servlet中获取一些信息并将其添加到表格中。所以我使用ajax调用如下:

function addTable(name) {
        typesHash.push({id:localId++, name:name, price:100,unit:1});
        var responsePromise = $http.get("http://localhost:8080/purchase/AddInfo");
             responsePromise.success(function(data, status, headers, config) {
                    typesHash.push( {id:data.id,name : data.name, price : data.price,unit:2.5 });
                });
    }

但是当我使用它时,我得到他跟随错误:

ReferenceError:$ http未定义

任何人都可以帮忙吗? (只是一个简单的说明:这段代码是我真实代码的较小版本,因为我需要它而故意使用工厂)

1 个答案:

答案 0 :(得分:2)

你的控制器内部你应该插入一个$ http参数:

app.controller('CTRL1', function($scope, $http){
    //Now your can use $http methods
})
如果您使用服务内部的$ http请求方法

,请在服务声明中插入$ http参数