2011-11-03 2 views
1

그래서 이상한 문제가 있습니다. 웹 응용 프로그램의 javascript를 통해 SQLite 데이터베이스로 작업하고 있습니다. 호출되지 않는 함수에 문제가 있습니다. 여기에 내가 무엇을 가지고 :SQLite가 경고없이 자바 스크립트에서 실행되지 않습니다.

var db = window.openDatabase("database", "1.0", "Database", 
     200000); 
db.transaction(functionIUse, errorCB); 

위의 코드는 작동하지 않습니다. functionIUse가 호출되지 않습니다. 그러나 내가 좋아하면 :

var db = window.openDatabase("database", "1.0", "Database", 
     200000); 
alert('db open'); 
db.transaction(functionIUse, errorCB); 

갑자기 불려옵니다. 아무도 나 에게이 동작을 설명 할 수 있습니까? 정말 당황 스럽네요. 분명히 나는 ​​또한 그것이 작동하도록하는 방법을 알고 싶다.

감사합니다.

+0

내가 직접 발견 한 해결책은 자바 스크립트를 인라인으로 유지하는 것이 었습니다. 하지만 별도의 파일에 넣고 작동시킬 수는 없습니까? – AndersDaniel

답변

1

귀하의 문제는 분명히 이상하지만, 귀하의 오류 콜백과 관련이 있다고 생각합니다.

이를 테스트하기 위해 내가 만든 다음 jsfiddle

var errorCB = function(){ 
    alert("An Error Occured"); 
} 
var functionIUse = function(transaction){ 
    alert('functionIUse Called'); 
} 
var functionIUse2 = function(transaction){ 
    alert('functionIUse2 Called'); 
} 
var db = window.openDatabase("database", "1.0", "Database", 200000); 
alert('Database Has Been Opened'); 
db.transaction(functionIUse, errorCB); 
db.transaction(functionIUse, errorCBThatDoesntExist); 

당신이 호출되는이 자바 스크립트 functionIUse을 실행하지만 functionIUse2하지 않는 다른 유일한 것은 errorCBThatDoesntExists하지 않고 errorCB이 존재하면.

JavaScript 프레임 워크를 사용하여 html5sql.js과 같은 데이터베이스와 상호 작용하는 것이 좋습니다. 보다 명확하고 명확하게 정의 된 콜백을 제공 할뿐만 아니라 HTML5 웹 데이터베이스의 비동기 특성을 처리 할 수있는 프레임 워크를 제공하여 작업을 훨씬 간단하게 만들 수 있습니다.

+0

네가 옳은 것 같아. 그게 내가 복사 붙여 넣기에 대한거야. 나는 외부 파일에서 전화를 받았을 때 errorCB가 없었습니다. 또한 html5sql.js는 많은 시간과 노력을 덜어줍니다. 고마워. – AndersDaniel

관련 문제