Frage

Hier ist mein Code:          

function search_buddy() 
{
    $.post("num.php",function (ret){
        num=ret;
    });
    $("#Layer7").html(num);
}
</script>

<div id="Layer8">
     Find a buddy : 
    <input type="text" id="search" onkeyup="search_buddy()"/>&nbsp;:
</div>

Nun, wenn ich ein Zeichen in das Textfeld mit der ID eingeben = suchen, die Funktion search_buddy scheint nicht ausgelöst werden. Während, wenn ich geben Sie zwei oder mehr Zeichen, arbeitet die Funktion perfectly.Why geschieht dies?

War es hilfreich?

Lösung

Best-Ressource auf DOM-Ereignisse: http://www.quirksmode.org/dom/ events / keys.html

Es sieht aus wie Ihre Event-Handler „search_buddy“ feuert eine AJAX-Anforderung, die asynchron ist. Der Rest der Funktion läuft parallel mit dem AJAX-Request, so "num" ist nicht definiert, bevor der $ .post kehrt zurück.

// num is undefined here... unless your network has 0 latency
$("#Layer7").html(num);

Sie müssen diesen Code wickeln (klebte oben) in einer Callback-Funktion. Es scheint, Parameternummer zu 3: http://api.jquery.com/jQuery.post/

Nicht getestet, aber beste Vermutung:

function search_buddy() {
    $.post("num.php", function (ret) {
        num=ret;
        $("#Layer7").html(num);
    });
}

Hier sind einige Änderungen, damit Sie verstehen:

function search_buddy() {
    alert("before the $.post execution");
    $.post("num.php", function (ret) {
        num=ret;
        $("#Layer7").html(num);
        alert("$.post callback");
    });
    alert("immediately after the $.post execution");
}

. Hinweis: „alert“ wird all JavaScript-Verarbeitung halt so Sie in der Lage sein zu sehen, was Ereignisse auftreten, wenn

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top