2017-10-26 7 views
0

MobileFirst v7에서 v8으로 마이그레이션 된 하이브리드 응용 프로그램을 테스트하고 있습니다.Javascript tx.executeSql() hit TypeError : type error

가 지금은 "형식 오류"를 얻을 나는 update 문을 실행하려고하면

var db = openDatabase(); 
var addr1 = document.getElementById('Addr1').value; 
var addr2 = document.getElementById('Addr2').value; 
var addr3 = document.getElementById('Addr3').value; 
var id = document.getElementById('Id').value; 

db.transaction(function (tx) { 
    sqlupdate= "UPDATE Profile SET Addr1 = '" + addr1 + "', "; 
    sqlupdate= sqlupdate + " Addr2 = '" + addr2 + "', "; 
    sqlupdate= sqlupdate + " Addr3 = '" + addr3 + "' "; 
    sqlupdate= sqlupdate + " where Id ='" + id + "'"; 

    tx.executeSql(sqlupdate,errorOn,successOn); 
}); 

function errorOn() 
{ 
    alert("Error"); 
} 

function successOn() 
{ 
    alert("Profile Saved"); 
} 

enter image description here enter image description here

내가 SELECT에 대한 tx.executeSql()를 실행하고 문제없이 INSERT하고 있습니다를, 이 오류는 UPDATE 일 때만 발생합니다.

누구든지 내 실수를 지적 할 수 있습니까? 감사합니다. .

+0

나는 오류 처리기가 유용한 정보와 함께 호출되어 "오류"를 경고하는 대신 사용하는 것이 확실합니다 ... – Andreas

+0

안녕하세요 Andreas, 의견을 보내 주셔서 감사합니다. 불행하게도 실행은 errorOn에도 포함되지 않습니다. 콜백. 그냥 tx.executeSql()에서 멈추고 내가 가진 유일한 정보는 콘솔의 오류 메시지입니다. –

답변

0

좋아요 ... 마지막으로 대답을 얻었습니다. 문제는 여기에서있다 :

tx.executeSql(sqlupdate,errorOn,successOn); 

이 기능은 4 개 매개 변수를 필요로하고 콜백의 위치를 ​​전환 할 필요가 :

db.transaction(function (tx) { 
    sqlupdate= "UPDATE Profile SET Addr1 = ?, "; 
    sqlupdate= sqlupdate + " Addr2 = ?, "; 
    sqlupdate= sqlupdate + " Addr3 = ? ; 
    sqlupdate= sqlupdate + " where Id =? "; 

    tx.executeSql(sqlupdate,[addr1, addr2, addr3, id],successOn, errorOn); 
}); 

:

tx.executeSql(sqlupdate,*[updateParams]*,successOn, errorOn); 

그래서 솔루션은 다음에 코드를 변경할 수 있습니다 최소한의 코드 변경을 위해 SQL을 그대로두고 빈 배열을 넣어 작동시킬 수 있습니다.

tx.executeSql(sqlupdate,[],successOn, errorOn);