0

alert(result_set) 第一次显示 null,但是当这个函数被第二次调用时,它显示正确的值。有一个简单的按钮正在执行此功能。全局变量 course_no 第一次正确设置,但 result_set 不是第一次设置。

这是我的jQuery移动代码:

result_set=null;
//load database for the lesson
 function loadLesson(lessonno){
     $(".audio-pause").hide();
     stopAudio();
     clearMarker(); 
     lesson_no = lessonno; 
     $("#lessonno").html("Lesson "+lesson_no);
     $("#lessonImage").attr("src","lessons/Lesson_"+lesson_no+".png");    
     $('.audio-position').html("");

    var sql =  "select Lesson,x1,y1,x2,y2,starttime from lessoninfo where Lesson="+lesson_no;
    db.transaction (function (transaction){
        transaction.executeSql (sql, undefined, function (transaction, result){ //alert(result.rows.length);
            result_set = result;
        });
    });alert(result_set)
    setImageVariables();
    markerCount=0;
    $(".audio-play").show();
 }
4

1 回答 1

1

Web SQL 是异步的,就像 AJAX 一样。任何依赖于结果集的事情都必须在回调函数中完成。

 function loadLesson(lessonno){
     $(".audio-pause").hide();
     stopAudio();
     clearMarker(); 
     lesson_no = lessonno; 
     $("#lessonno").html("Lesson "+lesson_no);
     $("#lessonImage").attr("src","lessons/Lesson_"+lesson_no+".png");    
     $('.audio-position').html("");

    var sql =  "select Lesson,x1,y1,x2,y2,starttime from lessoninfo where Lesson="+lesson_no;
    db.transaction (function (transaction){
        transaction.executeSql (sql, undefined, function (transaction, result){ //alert(result.rows.length);
            result_set = result;
            alert(result_set);
            setImageVariables();
            markerCount=0;
            $(".audio-play").show();
        });
    });
 }
于 2013-09-25T19:08:27.227 回答