2013-03-27 2 views
0

html5 및 javascript.I을 사용하여 모바일 웹 응용 프로그램을 만드는 중 두 개의 javascript 파일이 있습니다. AttributesDatabase.js 및 AttributeView.js.From AttributeView.js에서 하나의 select 쿼리를 실행하는 해당 AttributeDatabase.js에서 하나의 함수를 호출합니다. 이제 쿼리 결과는 AtttributeView.j로 이동해야합니다. 그러나 Websql 트랜잭션은 비동기 호출입니다. 적절한 결과를 반환하지 않습니다. 거기에 websql 결과를 처리 할 수있는 방법이 있습니다. 어쨌든 도와주세요. 이 반환HTML5에서 websql의 결과 집합을 처리하려면 어떻게해야합니까?

function (transaction, result) { return result; } 

당신 succes에이 (DCoder에 의해 명시된 귀하의 질문에 코멘트에서처럼) 다시 전화에

편집

AttributeView.js 

var AttributeDAOObj = new AttributeDAO(); 

AttributeDAOObj.GetAttributeList(); 
alert(AttributeDAOObj.GetAttributeList()); //This alert is coming as undefined. 

AttributeDAO.js 
this.GetAttributeList = function() { 
    var baseDAOObj = new BaseDAO(); 
    var query = "SELECT AttributeName FROM LOGS"; 
    // this.Successcalbackfromsrc = this.myInstance.Successcalback; 
    var parm = { 'query': query, 'Successcalback': this.myInstance.Successcalback }; 
    baseDAOObj.executeSql(parm); 
} 

//To Create database and execute sql queries. 
function BaseDAO() { 
this.myInstance = this; 
//Creating database 
this.GetMobileWebDB = function() { 
    if (dbName == null) { 
     var dbName = 'ABC'; 
    } 
    var objMobileWebDB = window.openDatabase(dbName, "1.0", dbName, 5 * 1024 * 1024); 
    return objMobileWebDB; 
} 

//Executing queries and getting result 
this.executeSql = function (query) { 
    var objMobileWebDB = this.myInstance.GetMobileWebDB(); 
    objMobileWebDB.transaction(function (transaction) { 
//In this transaction i m returning the result.The result value is coming. 
     transaction.executeSql(query, [], function (transaction, result) { return result; }, this.Errorclback); 
    }); 
} 

}

+0

코드를 게시 한 경우 질문에 쉽게 대답 할 수 있습니다. – jugg1es

+1

비동기 작업에서 결과를 반환하지 않으면 결과가 도착하면 콜백을 호출합니다. – DCoder

답변

0

문제는 어디로?

그래서 이것은 (또는 적어도 하나의 방법)을 수행하는 방법이다

당신이 예를 위해 할 수있는

:

function (transaction,result){ 
    console.log("yes, I have some result, but this doesn't say anything, empty result gives also a result"); 
    // so check if there is a result: 
    if (result != null && result.rows != null) { 
     if (result.rows.length == 0) { 
      // do something if there is no result 
     }else{ 
      for (var i = 0; i < result.rows.length; i++) { 
       var row = result.rows.item(i); 
       var id = result.rows.item(i).id; //supposing there is an id in your result 
       console.log('Yeah! row id = '+id); 
      } 
     } 
    }else{ 
     // do something if there is no result 
    } 
}; 

참고 위의 코드가 조밀하게 될 수 있지만, 그것을 이해하는 방법이다 보다 나은.

다른 방법은 코드의 별도 조각이므로이 함수는 SQL 구문을보다 간결하고 읽기 쉽게 유지하는 것입니다. 당신이 오류 콜백을 호출하는 것처럼 이것은 당신의 함수 (이 앞에 그것과 함께) 또는 완전히 분리 된 함수가 될 수 있습니다.