Domanda

Quindi abbiamo questa:

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

dal client al server: E 'invia 'sameValue' per testeUpdate.php usando POST.

In caso di successo, riceve i dati restituiti dallo script lato server e fare qualcosa con quella sul lato client. Corretto?

C'è qualcosa tra lo script lato server e questo script lato client che non sto ottenendo.

Domanda: Come funziona dadosResposta si riempie con i dati restituiti dallo script lato server? Come si sa? Come funziona? Forse la domanda può anche essere posta: come si fa jquery sa quando qualcosa è "il successo"

o cercando un altro modo: Il lato server esegue lo script, restituisce alcuni dati codificati in JSON. Fino a qui ok. Dopo questo, che cosa succede? Come si fa a saltare nella parte lato client di nuovo?

[update] Cercando di nuovo: So che: dadosResposta contiene tutto ciò che gli script lato server restituisce la mia domanda è, Come lo fa sa di questo? Come fa a farlo? [/ Update]

Grazie mille, MEM

È stato utile?

Soluzione

La funzione .post jQuery utilizza un oggetto XMLHttpRequest per accedere all'URL che avete passato ad esso. Gli risponde del server sia con un 200 OK (esito positivo) o qualche altra risposta (presumibilmente fallimento).

In caso di successo, l'oggetto XMLHttpRequest ha il suo insieme di proprietà responseText (o responseXML) per i dati restituiti dal server. Il dietro le quinte-jQuery funzione che gestisce la risposta poi guarda il tuo ragionamento dataType per determinare che cosa fare con i dati restituiti. Nel caso del tuo esempio, si tenta di analizzare in un oggetto.

Supponendo che la risposta è una stringa JSON valido, quindi passa l'oggetto appena creato la vostra funzione di callback come il suo primo (e unico) argomento, che hai nominato dadosResposta.

che è come jQuery riceve i dati in dadosResposta.

Modifica Ecco alcuni codice che probabilmente è vagamente simile a quello che sta succedendo:

$.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();
}

Altri suggerimenti

Il parametro della funzione di callback (dadosResposta in questo caso) contiene qualunque sia il rendimento di script lato server. Ad esempio, se lo script lato server è stato appena tornando la parola "completata" in formato testo, dadosResposta sarebbe il "completed" stringa.

In questo caso particolare, il dato è JSON, che permette ai dati di essere meglio organizzati in modo che i campi specifici possono essere accessibili come in dadosResposta.nsName.

jQuery conosce la chiamata ha avuto successo quando la richiesta restituisce un codice di stato HTTP 200. Se il server non riesce a elaborare la richiesta, un codice di errore (ad esempio 500) deve essere restituito.

$.post prende una funzione di callback. Quella di callback accetta un argomento, che è i dati restituiti dal server. Quindi, nel tuo caso, è dadosResposta i dati restituiti dal server.

Si sa se ha avuto successo o no a causa del codice di stato nel header HTTP restituita (200 OK in questo caso). È possibile includere un secondo argomento a vostra callback che conterrà lo stato.

Modifica Si sa perché è così che funziona jQuery. jQuery ottiene la risposta, e lo passa come parametro per il callback. Se vuoi sapere di più riguardo la struttura interna, leggere su XMLHttpRequest .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top