Javascript Zurückgegebene Wert von httprequest
Php-Skript gibt einen Wert zurück, und der 1. Alarm funktioniert.
Ich bin nicht in der Lage-Referenz zurückgegebener Wert httprequest an der 2. Alarm. Im Idealfall würde ich die Funktion aufrufen get_captcha() - und würde es wieder den Wert - seine nur, dass ich nicht weiß, wie dies zu tun.
Merke ich, wird die variable Global ist möglicherweise nicht der beste Weg, dies zu tun, aber es ist die einzige Sache, die ich denken konnte - ich bin offen für alternativen.
<script type="text/javascript">
var url = "captcha_get_code.php"; //The server-side script
var cap;
function ValidateForm() {
get_captcha()
alert(cap); //undefined
}
function get_captcha() {
http.open("GET", url, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
function handleHttpResponse() {
if (http.readyState == 4) {
if (http.status==200) {
//return http.responseText;
cap=http.responseText;
alert(cap); //this one works
}
}
}
function getHTTPObject() {
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
if (!xmlhttp){
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
}
return xmlhttp;
}
var http = getHTTPObject(); //We create the HTTP Object
</script>
- Ich würde Ihnen raten, zu verwenden jQuery für diejenigen, die http-Aufrufe - es wird Sie sparen eine Menge mit ihm zu kämpfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht "return" - Werte von der erfolgreichen XMLHttpRequest-Aufrufe. Sie kann durchführen, unabhängig von der Art der Verarbeitung, die Sie brauchen innen die callback-Funktion.
XMLHttpRequests werden asynchron durchgeführt. Sie kann nicht Ihr code "warten" für Sie (es sei denn, Sie machen diese synchron) (und du bist wirklich, wirklich nicht zu tun). Es gibt keine wirkliche Notwendigkeit, aber da das runtime-system rufen Sie Ihren "readystatechange" handler auf, wenn die Anforderung abgeschlossen ist. Aus im code, sind Sie frei zu tun, was Sie brauchen.
Diese Tatsache erfordert, dass Sie denken etwas anders darüber, wie Sie den code schreiben, aber es ist nicht wirklich, dass viel von einer Anpassung. Wenn, zum Beispiel, würden Sie geneigt sein, schreiben Sie ein "processResults ()" - Funktion, dann kannst du immer noch tun — Sie würde einfach anrufen, die von innen die "readystatechange" - handler.
Sehe ich in diesem thread ist 4 Jahre alt, aber es hat falsche Antwort!
Können Sie get return-Wert aus einer erfolgreichen XMLHttpRequest-Aufrufe.
Mein Projekt verwenden, WebSocket, aber es die Nutzung von XMLHttpRequest, um Bilder hochzuladen.