веб-хранилище html 5 не вставляет запись

#jquery #html

#jquery #HTML

Вопрос:

возникли проблемы с вставкой записи в хранилище, немного отлажено. кажется, он извлек значение скорости из html-формы и передал его функции addItem. но он не выполняет transaction.ExecuteSQL.

 function errorHandler(transaction, error) {
    alert("SQL error: "   error.message);
}

try{
// open the database
var itemsDb = openDatabase('tripDb', '1.0', 'XB Trip DB', 100 * 1024);

// create the list items table if it doesn't exist
var queryCreateTable = 
    "CREATE TABLE IF NOT EXISTS xbTrip(xbId INTEGER NOT NULL PRIMARY KEY 
             AUTOINCREMENT, rate);";
itemsDb.transaction(function (transaction) {
    transaction.executeSql(queryCreateTable, [], null, errorHandler);
}, errorHandler);
}
catch (e)
{
alert(e.message);
}

$(document).ready(function() {

    $("#add").click(function() {
        addItem($("#rate").val(), function() {
        displayMessage();
    });     
        });

    function addItem(rate, callback) {      
    try{
        itemsDb.transaction(function(transaction) {
            transaction.executeSql(
                "INSERT INTO xbTrip(rate) VALUES (?)", 
                [rate],
                callback,
                errorHandler
            );
        });
    }
    catch (e)
    {
        alert(e);
    }       
} // addItem

function displayMessage(){
    alert("Insert record completed");
}
})  
  

Ответ №1:

Я взял ваш код и немного расширил его.

У вас была одна или две простые синтаксические ошибки, такие как точка с запятой в вашей строке SQL, не уверен, было ли это только в сообщении Soverflow или нет.

Вот рабочая реализация того, что вы пытаетесь сделать:

http://jsfiddle.net/TnPPa/1/

Возможно, сравните его с вашим и посмотрите, можете ли вы определить, что вызывает сбои в вашем коде в вашей конкретной ситуации, поскольку вы не предоставили контекст HTML / App.

Я думаю, что это, вероятно, был просто синтаксис и, возможно, какая-то чрезмерно сложная передача обратных вызовов внутри анонимных функций.

Дайте мне знать, как у вас дела.