2013-07-31 58 views
0

我做了選擇從數據庫中的數據,並顯示警告的功能,但我發現了以下錯誤在成功的功能:transaction.executeSql成功函數錯誤

無法讀取屬性「行」的未定義retrieveData

這裏是我的功能

function selectAll(){ 
    DB.transaction(
function(transaction) { 
    transaction.executeSql("SELECT * FROM CDprodutos", [], retrieveData()); //The retrieveData function is where the data is sent/returned to in parameters (transation, results) 
}); 
} 
function retrieveData(transaction, results) { 
    for(var i = 0; i < results.rows.length; i++) { 

     var data = results.rows.item(i)['id'] 
     alert(data.value); 
    } 
} 
+1

'retrieveData()'被立即調用。除去'executeSql'語句中的'()'retrieveData'調用。另外,你需要傳遞參數給它,所以你可能需要一個匿名。功能。 – tymeJV

+0

當我刪除() – shadsauhduisad

回答

0

它看起來像被立即執行的功能,並且還沒有被傳遞到數據它顯然rows屬性來自undefined.通過在retrieveData之後編寫(),您正在立即調用該函數。刪除()以將其用作回調。

這似乎也需要轉嫁給它的數據,所以匿名函數可能會在這裏做的伎倆:

function selectAll(){ 
    DB.transaction(
     function(transaction) { 
      transaction.executeSql("SELECT * FROM CDprodutos", [], function() { 
       retrieveData(transation, results); //not sure where results comes from? parameter of function?? 
     }); 
    }); 
} 

function retrieveData(transaction, results) { 
    for(var i = 0; i < results.rows.length; i++) { 
     var data = results.rows.item(i)['id'] 
     alert(data.value); 
    } 
} 
+0

這個函數不會被調用它很好用!非常感謝 – shadsauhduisad

+0

@shadsauhduisad - 一旦允許,請標記答案。樂意效勞。 – tymeJV

+0

我正在等待標記爲答案的最短時間。 – shadsauhduisad