2017-02-15 14 views
1

イオンハイブリッドアプリケーションを開発中です。私はサーバーから価値を得るために$ httpを使用しています。次に、私はcordova s​​qliteクエリを作成します。codeovaクエリの中で、サーバからの$ http呼び出しの結果とcordovaクエリの結果をsqliteデータベースに挿入します。しかし、私は私のcordovaクエリで$ httpの戻り値の値を取得することはできません。以下は、私のコードです:Javascript AngularJS:内部関数は外部関数の可変値ではありません

$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と応答[i]を.ChannelName値応答を取得することはできません。

私の貧しい人々のために申し訳ありません。

+0

私たちに表示**応答** json data – NNR

答えて

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"); 
}); 
関連する問題