$ajax を 2 つ待つと、 $.when($.ajax(1),$.ajax(2)).then(myFunc, myFailure); と書くことができます。 しかし、何百もの $ajax を待たなければならないので、実行するマップを作成しますが、var mapArray=$.mapは常に空です。
var times=0;
$("#pComplete").bind("click",
function(event, ui) {
$.mobile.loading('show');
db.readTransaction(function(tx) {
tx.executeSql('select * from insphis insp where TaskNo='+localStorage.getItem("TaskNo"), [],
function(tx, results) {
var len = results.rows.length;
//times=len;
var arr=new Array();
for (var i = 0; i < len; i++)
{
arr.push(results.rows.item(i));
}
var mapArray=$.map(arr, function(val, i){
var str='http://192.168.1.29:9999/IInspectionService.svc/web/AddInspHis?taskNo=' + localStorage.getItem("TaskNo") + '&propNo=' + val.PropNo + '&value=' + val.Value + '&value2=' + val.Value2;
$.ajax({
type: 'GET',
url: str,
contentType: 'text/json',
dataType: "jsonp",
jsonp: "callback",
async: true,
success: function(json) {
// --times;
console.log(json);
// if(times==0)
// {
// alert("OK!");
// loadIndex();
// }
}
});
});
$.when(mapArray).done(function(){
console.log("all OK");
})
.fail(function(){ alert("ERROR"); });
},
null);//end of executeSql
});
});