在堅果殼我編程作爲一種愛好。我試圖在Safari 5中將數據插入SQLite數據庫。Safari 5:Javascript sqlite'插入交易'似乎沒有看到範圍內的變量正確
我並不擔心注入攻擊,因爲使用自制擴展名,這僅用於從我訪問的某些站點收集數據。
我的傳記每循環迭代一個循環,其中包含來自'DOM變化事件'的數據最多20次迭代的循環)不會看到正確傳遞給它的變量。調用'console.log(變量)'表明它們確實包含正確的數據 - 但INSERT不會爲每個記錄插入正確的(不同的)數據,除了第一個正確遞增的變量(通過我自己的增量機制與其他行爲異常相同的範圍)。
我已閱讀過有關'工作人員'的重要內容,但對他們一無所知。
N.B. Windows 7 Pro
任何指針感激地收到 - 謝謝。
enter code here: HandleDOM_Change = function() {
for (p=0; p<snip.length; p++) {
title = snip[p].getElementsByClassName('title')[0].firstChild.textContent;
value = snip[p].getElementsByClassName('value')[0].firstChild.textContent;
lang = snip[p].getElementsByClassName('lang')[0].textContent;
if (hP[p] != lang) {
++count;
id = count;
db.transaction(function (tx) {
console.log("events:" +events+ " title:" +title+ " value/p+1/lang: " +value+ ", " +(p+1)+ ", " +lang);
tx.executeSql('INSERT INTO foo (id, text, time, name) VALUES (?, ?, ?, ?)', [id, title, value, lang]);
},myTransactionErrorCallback,myTransactionSuccessCallback);
hP[p] = lang;
}
}
++events;
}
//全局變量:事件INTEGER,剪斷ARRAY,計數INTEGER 請原諒愚蠢的語法問題 - 我不得不刪除一些穀殼,使其可讀 - 但本質遺體因爲控制檯日誌報告,變量包含我想要的,但'tx.executeSql'說不。
N.B.爲了找到問題,所有約束都從插入的值中刪除 - 即使在聲明中(即在全局級別較早發生的)中,主鍵也不會被執行。此外,爲了澄清,'ID'增量正確,並記錄在數據庫中,但其他三個插入一個不變的值 - 與日誌報告相反(我已經意識到日誌不輸出ID,但它在清潔之前 - 誠實地)。
非常感謝。
您可能需要發佈您的代碼以幫助我們爲您提供幫助。 – thirtydot 2010-12-15 12:57:25
歡迎來到StackOverflow。一對夫婦指針...如果你想堅持,請註冊一個帳戶。我合併了您的兩個未註冊賬戶(當您未註冊時,它很容易創建多個賬戶)。此外,您可以隨時編輯您的問題以添加其他信息。最後,在幾天內,您可以選擇您的答案作爲解決方案。似乎有點奇怪,但這就是我們如何處理這些部分的事情。 – Will 2010-12-16 14:05:49