簡體   English   中英

將數據從異步請求添加到WebSQL數據庫時出錯

[英]Error when adding data from an asynchronous request to a WebSQL database

我正在使用使用設備日歷的Phonegap / Cordova構建適用於Android的應用程序。 我已經編寫了一個插件(“ Calify”),可以將事件添加到設備日歷中,效果很好。 但是,我嘗試將插件返回的設備日歷事件ID添加到Web-SQL數據庫中的記錄中,但這會給我以下錯誤(在Android模擬器中運行):

file:///android_asset/www/cordova-2.2.0.js: Line 1090 : processMessage failed: Message: S01 Calify507282772 s[{"id":191,"calid":615}]
file:///android_asset/www/cordova-2.2.0.js: Line 1091 : processMessage failed: Error: Error: INVALID_STATE_ERR: DOM Exception 11

這是我的代碼的樣子。

window.addEvent(function(insertions){
    data = JSON.parse(insertions);
    console.log(insertions);
    event_id = data[0]['calid'];
    id = data[0]['id'];

    tx.executeSql('UPDATE AFSPRAKEN SET eventID=? WHERE id=' + id, [event_id]);
}, [calendarID, [{start: start.getTime(), end: end.getTime(), title: event_title}]]);

“插入”的日志給了我想要的結果,並分別記錄了“ event_id”和“ id”。 似乎與數據庫插入有關(這也是異步的)。 請注意,此函數在數據庫事務中運行,這是必需的,因為在此日歷事件函數之外,我也在運行其他一些查詢。 注釋掉插入查詢可使代碼運行無錯誤。

DOM異常11似乎意味着該對象(我猜是“插入”?)不再可訪問,也許與此有關。

我認為我所犯的錯誤現在已經很明顯了,因此對於每個通過Google查找此問題的人(錯誤消息並未真正指出正確的方向),這就是我的代碼給出錯誤的原因:

數據庫事務以及Phonegap插件都是異步的。 Phonegap函數在數據庫事務外部競爭,從而無法在該事務內部運行數據庫查詢。 這可以通過幾種方式解決:

  • 在Phonegap通訊的完整功能中打開一個新的數據庫事務
  • 像我一樣,在數據庫事務處理后連接Phonegap插件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM