Hallo
Ich bin mit meinem Latain am Ende und hoffe ihr könnt mir helfen.
Zum Problem: In einem Javascript benötige ich einen Wert aus meiner MySQL Datenbank den ich mir per XMLHttpRequest hole. Problem ist, das der Javascript Teil schon weiter arbeitet, wenn der Request noch gar nicht eingetroffen ist. Versuche ich das ganze manuell (und unschön) zu verzögern (per timer, while, was auch immer) stürzt der Browser ab. Haue ich vor den Javascript Teil (ans Ende des AJAX-Requests) einen einfach "ALERT" läuft alles wunderbar. Kann mir das bitte mal jemand erklären? Mach ich da was falsch?
Hier mein moderierter Quellcode:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| function pl_sn_artikel(value, id, ind) { var xmlHttp = null; var sn_art = false; if (typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } if (!xmlHttp) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xmlHttp = null; } } } if (xmlHttp && value > 1) { var url = "../sql/select.php"; var params = "Merker=60&artikel="+Grid.cells2(id-1, 2).getValue().toString(); xmlHttp.open("POST", url, true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); xmlHttp.setRequestHeader("Content-length", params.length); xmlHttp.setRequestHeader("Connection", "close"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { var B = xmlHttp.responseText; if (B.substring(0,1) == "1") { sn_art = true; } } }; xmlHttp.send(params); } alert("Vorgang: "+Grid.cells2(id-1, 1).getValue().toString()+" wird angelegt !"); if (isNaN(value) || value == "") { alert("Bitte überprüfen Sie die Mengenangabe !\nDie Eingabe ist unzulässig !"); return value; } if (sn_art == true) { alert("Für diesen Artikel ist eine Menge größer als '1' unzulässig !\nBitte überprüfen Sie Ihre Eingabe !"); return value; } return true; }; |
Vielen Dank im voraus.
lg
Oli
Moderiert von Christian S.: Code- durch JS-Tags ersetzt