首先,一个XMLHttpRequest调用脚本来更新MySQL数据库,它可以根据情况多次运行。脚本insertLocation
将完成这项工作,但最后我正在调用第二个XMLHttpRequest,它应该更新从数据库生成的文件。问题是第二个XMLHttpRequest永远不会读取更新的数据库,因此第一个XMLHttpRequest中缺少数据。
然而,当我查看数据库时,数据就在那里。在创建文件之前我甚至尝试过睡觉,但它没有帮助。似乎无法调用2 XMLHttpRequest。我知道.open()的第三个参数,当它设置为false时,它将等待请求完成,但它现在正在工作。这是我的代码:
insertToDatabase(lat,lng,id);
//there I tried 10 second sleep
updateDatabaseFile();
function updateDatabaseFile() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","updateCoords.php",false);
xmlhttp.send();
alert("updated");
}
function insertToDatabase(lat,lng,id) {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","insertLocation.php?lat="+lat+"&lng="+lng+"&id="+id,false);
xmlhttp.send();
alert("inserted")
}
一件事,当我手动运行updateDatabaseFile.php
它将完成这项工作。所以我认为问题可能是当整个脚本结束时对数据库进行了更改,这就是我在阅读时获取不完整数据的原因。
编辑:警报(“已插入”)将在警报(“更新”)后打开,因此失败。第二个将首先完成。