Javascript AngularJS:内部函数不能是外部函数的变量值

时间:2017-02-15 10:10:16

标签: javascript angularjs sqlite cordova

我正在开发离子混合应用。我使用$ http从服务器获取值。接下来,我将在cordova查询中进行cordova s​​qlite查询,我想将来自服务器的$ http调用和cordova查询结果的结果插入到我的sqlite数据库中。但是,我无法在我的cordova查询中获得$ http返回值的值。以下是我的代码:

$http({
    method: "post",
    url: "http://localhost/php2/get_channel.php",
    data: {
        user_name: usernameID
    },
    headers: { 'Content-Type': 'application/json' }
}).success(function(response) {
    for(i=0; i<response.length; i++){
        var channelNameQuery = "SELECT * FROM chat_friend WHERE channel_id=?"
        var channelNamePromise = $cordovaSQLite.execute(db, channelNameQuery, [response[i].ChannelName]).then(function (result){
            var ChannelQuery = "REPLACE INTO chat_channel (last_text, usernameID, chat_channel, chat_channel_name) VALUES (?,?,?,?)";
            $cordovaSQLite.execute(db, ChannelQuery, [response[i].LastText, usernameID,  response[i].ChannelName, result.rows.item(0).UserName]);
        })
    }
}).error(function(response) {
    console.log(response);
    console.log("failed");
});

我无法在$ cordovaSQLite.execute()函数中得到响应[i] .LastText和response [i] .ChannelName值。

抱歉我的语言不好。

1 个答案:

答案 0 :(得分:1)

您收到的数据会映射到response.data。尝试使用angular.forEach()循环访问您的数据。请记住,response主要是一个对象,所以你不能在这里获得response.length。请查看$http AngularJS documentation

$http({
    method: "post",
    url: "http://localhost/php2/get_channel.php",
    data: {
        user_name: usernameID
    },
    headers: { 'Content-Type': 'application/json' }
}).success(function(response) {
    angular.forEach(response.data, function (data) {
        var channelNameQuery = "SELECT * FROM chat_friend WHERE channel_id=?"
        var channelNamePromise = $cordovaSQLite.execute(db, channelNameQuery, [data.ChannelName]).then(function (result){
            var ChannelQuery = "REPLACE INTO chat_channel (last_text, usernameID, chat_channel, chat_channel_name) VALUES (?,?,?,?)";
            $cordovaSQLite.execute(db, ChannelQuery, [data.LastText, usernameID, data.ChannelName, result.rows.item(0).UserName]);
        })
    });
}).error(function(response) {
    console.log(response);
    console.log("failed");
});