JQuery $ .post - vom Server zum Client - wie geht das weiß, was Antwort zu bekommen?

StackOverflow https://stackoverflow.com/questions/3531182

  •  30-09-2019
  •  | 
  •  

Frage

So haben wir diese:

$.post('testeUpdate.php', 'someValue'
        function(dadosResposta) {
            $('#ns-nome').val(dadosResposta.nsName);
            $('#ns-endereco').val(dadosResposta.nsAddress);
        },
"json");

vom Client zum Server: Ist sendet 'sameValue' zu testeUpdate.php mit POST.

Bei Erfolg erhält er die von dem Server-Seite Skript zurückgegebenen Daten und etwas zu tun mit dem auf der Client-Seite. Richtig?

Es ist etwas zwischen dem Server-Side-Skript und diesem Client Side-Skript, dass ich bin nicht immer.

Frage: Wie dadosResposta wird mit den Daten gefüllt von der serverseitigen Skript zurückgegeben? Wie funktioniert es weiß? Wie funktioniert es? Vielleicht ist die Frage auch gestellt werden: Wie tun jquery weiß, wann etwas „auf Erfolg“ ist

oder auf andere Weise versuchen: Die Server-Seite führt das Skript, gibt einige codierten Daten in json. Bis hier ok. Danach, was passiert? Wie wir in den Client-Seite Teil springen wieder?

[Update] Erneuter Versuch: Ich weiß, dass: dadosResposta enthält, was auch immer die serverseitige Skript kehrt Meine Frage ist, Wie hat es darüber weiß? Wie macht er das tun? [/ Update]

Vielen Dank, MEM

War es hilfreich?

Lösung

Die Funktion jQuery .post verwendet ein XMLHttpRequest-Objekt die URL zugreifen, die Sie an sie übergeben. Der Server antwortet mit entweder einem 200 OK (Erfolg) oder einer anderen Reaktion (vermutlich Fehler).

Bei Erfolg des XMLHttpRequest-Objekt hat seinen responseText (oder responseXML) Eigenschaft auf die vom Server zurückgegebenen Daten. Der Blick hinter die Kulissen jQuery-Funktion, dass Griffe die Antwort dann an Ihrem dataType Argument schaut, um zu bestimmen, was mit den zurückgegebenen Daten zu tun. Im Fall von Ihrem Beispiel, versucht er es in ein Objekt zu analysieren.

Unter der Annahme, die Antwort ist ein gültiger JSON-String, es geht dann das neu erstellte Objekt zu Ihrer Callback-Funktion als erstes (und einzigen) Argument, das Sie dadosResposta benannt haben.

Das ist, wie jQuery Ihre Daten in dadosResposta wird.

Edit: Hier ist ein Code, der wahrscheinlich vage ist ähnlich zu dem, was vor sich geht:

$.post = function([arguments])
{
    var xhr = new XMLHttpRequest(); // not cross browser compatible, but good enough for demonstration
    xhr.onreadystatechange = function()
    {
        if (xhr.readyState === 4 && xhr.status === 200)
        {
            switch (your_dataType)  // check your data type
            {
                case 'json':
                    your_callback(json_decode(xhr.responseText));    // call your function with JSON object
                    break;
                case 'xml':
                    your_callback(xhr.responseXML);    // call your function with XML
                case ... (etc)
            }
        }
    }

    xhr.open('POST', your_URL, true);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhr.send();
}

Andere Tipps

Der Parameter in der Callback-Funktion (dadosResposta in diesem Fall) enthält, was auch immer die serverseitigen Skript zurückgibt. wenn der Server-Seite Skript So wurde zum Beispiel nur das Wort „abgeschlossen“ im Klartext Rückkehr dadosResposta würde die Zeichenfolge "completed" sein.

In diesem speziellen Fall ist die Daten JSON, die die Daten ermöglicht eine bessere organisiert werden, so dass bestimmte Felder können wie in dadosResposta.nsName zugegriffen werden.

kennt jQuery der Aufruf erfolgreich war, wenn die Anforderung einen HTTP-Statuscode 200 zurück, wenn der Server die Anforderung nicht verarbeiten kann, einen Fehlercode (dh 500) zurückgegeben werden soll.

$.post nimmt eine Callback-Funktion. Der Rückruf nimmt ein Argument, das die Daten von dem Server zurückgeführt wird. Also, in Ihrem Fall dadosResposta die Daten vom Server zurückgegeben.

Es weiß, ob es erfolgreich ist oder nicht, weil der Statuscode war im HTTP-Header zurückgegeben (200 OK in diesem Fall). Sie können ein zweites Argument in Ihrem Rückruf enthalten, die den Status enthalten wird.

EDIT: Es weiß, weil das ist, wie jQuery funktioniert. jQuery bekommt die Antwort, und übergibt sie als Parameter an Ihren Rückruf. Wenn Sie mehr über die Interna wissen wollen, lesen Sie auf XMLHttpRequest .

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