Возвращаемое значение функции показывает неопределенный в Sqllite executeSql запрос javascript - PullRequest
0 голосов
/ 13 сентября 2011

Все

Пока я изучаю Javascript,

Как я могу получить значение из строки, возвращаемой оператором «SELECT ...», и вернуть его в переменную (здесь это «порт»), чтобы я мог использовать это значение в другой функции.

Это то, с чем я сталкиваюсь уже более 1,5 дней.

Вот код, который я написал,

function DBQuery(Port_Id)
{
var portid=Port_Id; 
var port="";

db.transaction(function (tx){

    tx.executeSql('SELECT port_name FROM vact_port where port_id='+portid+'', [],  function(tx, results){

    var lenPort=results.rows.length;

    if(lenPort == 0)
    {   
        alert("No ports found") ;
        return ;
    }

    port = results.rows.item(0).port_name;
    alert ("Inside Success" + port) ;  //This shows correctly


    //return port;
});
alert ("Inside Success" + port) ; //This shows "undefined"

 });
}

Спасибо, Sunasra

1 Ответ

0 голосов
/ 13 сентября 2011

Ваш alert() вызов находится за пределами вашего обратного вызова.

db.transaction(), по-видимому, принимает анонимную функцию в качестве обратного вызова и вызывает ее с помощью объекта транзакции.Этот вызов произойдет всякий раз, когда база данных обойдется .Вызов db.transaction() планирует вызов анонимной функции, который произойдет позже.После того, как вы запланировали этот вызов, вы вызываете оповещение, используя port, который еще не был установлен.

Вам необходимо выполнить всю свою работу внутри обратного вызова.

...