以下のクエリでは、forループが4つの値を実行しています。最初の警告(id)では、これらの4つの異なる値を警告しています。ただし、ネストされたクエリでは、アラート文では最後のid値のみが出力され、4xではmax(b.id)の値が異なります。よくわかりません。誰が何が起きているのか知っていますか?競合状態が発生している可能性がありますか?Forループ後にネストされたHTML5 Web SQLクエリが処理された
私の目標は、idとb.idの両方に基づいて入力値を持つネストされたクエリにAjax呼び出しを配置することです。私は現在これをやっていますが、 "id"のajax呼び出しの値は、4つの異なる呼び出しすべてで同じです。戻り値のデータが混乱します。ありがとう。
database.db.transaction(function (tx) {
tx.executeSql('SELECT id, name from programs d', [], function (tx, results) {
for (var i = 0; i < results.rows.length; i++) {
var id = results.rows.item(i)['id'];
var name = results.rows.item(i)['name'];
alert(id);
tx.executeSql('SELECT max(b.id) + 1 max from people b where b.sid = ?',
[id],
function (tx, results) {
lastRecord = results.rows.item(0)['max'];
alert(id + "last rec: " + name);
}
);
}
},
function (event) { alert(event.message); });
あなたは明確になりますか? 2番目の 'tx.executeSql'で使われる' [id] 'が常に最初のクエリの結果セットの最後のものであるという問題はありますか? –
ええ、それは起こっている: 私の問題は、最初のネストされたクエリtx.executeSql( 'SELECT max ...')のクエリが正しく実行されているということです。しかしその下のアラートの範囲では、警告(id + "last rec:" + name) は最後の要素としてのみ表示されます。 – Garrett
これは、最初のネストされたクエリーでネストされたAjax呼び出しが3/4のケースで失敗する原因となります。 – Garrett