我正在构建一个Phone Gap应用程序,并在此documentation中使用db.transaction函数。我在db.transaction函数中看到有关参数顺序的一些相互矛盾的信息,我希望有人可以解释我看到的差异。
在下面的示例中,错误回调是第二个参数,成功回调是第三个参数:
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
function errorCB(err) {
alert("Error processing SQL: "+err);
}
function successCB() {
alert("success!");
}
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
这是另一个成功回调是第三个参数而错误回调是第四个参数的例子。
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
var len = results.rows.length;
console.log("DEMO table: " + len + " rows found.");
for (var i=0; i<len; i++){
console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data);
}
}
function errorCB(err) {
console.log("Error processing SQL: "+err.code);
}
function successCB() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
}
答案 0 :(得分:2)
不,这里没有冲突。 'transaction'是'Database'对象的方法,它的参数如'query,errorCallback,successCallback'。
另一方面; 'executeSql'是'Transaction'对象的方法,它的参数就像 '查询,IDONTKNOW,successCallback,errorCallback'。
所以文档说的是事实,但我不明白为什么回调参数序列也不同。我认为不同的人设计了这些物品。