No "Pragmatic Ajax (Site Dynamic Static) A Web 2.0 Primer", vi acidentalmente uma introdução ao estado de Readystae. Eu sinto que esta introdução é muito realista. A tradução é a seguinte:
0: (não iniciado) O método send () ainda não foi invocado.
1: (carregando) o método send () foi invocado, solicitação em andamento.
2: (carregado) O método send () foi concluído, resposta inteira recebida.
3: (interativo) A resposta está sendo analisada.
4: (concluído) A resposta foi analisada, está pronta para a colheita.
0 - (não inicializado) O método send () ainda não foi chamado
1 - (carregar) o método send () foi chamado e a solicitação está sendo enviada
2 - (carregamento está concluído) O método send () foi executado e todo o conteúdo de resposta foi recebido
3 - (interação) O conteúdo da resposta está sendo analisado
4 - (completo) A análise de conteúdo de resposta é concluída e pode ser chamada no cliente
A maioria dos outros livros é vaga sobre esses cinco estados do Estado Ready. Por exemplo, em "Foundations of Ajax", o "nome" do estado está simplesmente listado na Tabela 2-2 no livro - o estado da solicitação. Os cinco valores possíveis são 0 = não -inicializado, 1 = carregamento, 2 = carregado, 3 = interativo e 4 = completo. Os detalhes desses 5 estados parecem não ser mencionados em "Ajax (site dinâmico estático) em ação". Embora o "Ajax profissional" não seja satisfatório, ele ainda tem vantagens:
Existem cinco valores possíveis para o ReadyState:
0 (não iniciado): o objeto foi criado, mas o método open () não foi chamado.
1 (Carregando): O método open () foi chamado, mas a solicitação não foi enviada.
2 (carregado): a solicitação foi enviada.
3 (interativo). Uma resposta parcial foi recebida.
4 (completo): Todos os dados foram recebidos e a conexão foi fechada.
Existem cinco valores possíveis para o ReadyState:
0 (não -inicializado): (XML (padronização está se aproximando) objeto HttPrequest) foi criado, mas o método open () ainda não foi chamado.
1 (carga): o método open () foi chamado, mas a solicitação ainda não foi enviada.
2 (Carregamento está concluído): A solicitação foi enviada.
3 (interação): parte dos dados de resposta pode ser recebida.
4 (completo): Todos os dados foram recebidos e a conexão foi fechada.
Em "Compreendendo o Ajax: Usando JavaScript para criar aplicativos ricos na Internet", a tabela a seguir é explicada:
Código de status ReadyState
Status do XML (padronização está se aproximando) objeto httprequest
(0) não iniciado
O objeto foi criado, mas não é inicializado. (O método aberto não foi chamado.)
(XML (padronização está se aproximando) O objeto httprequest) foi criado, mas ainda não foi inicializado (o método aberto ainda não foi chamado).
(1) carregamento
Carregar o objeto foi criado, mas o método de envio não foi chamado.
(XML (padronização está se aproximando) O objeto HttPrequest) foi criado, mas o método de envio ainda não foi chamado.
(2) carregado
O método de envio foi chamado, mas o status e os cabeçalhos ainda não estão disponíveis.
O método de envio foi chamado, o status (HTTP Response) e o cabeçalho não estão disponíveis.
(3) interativo
Interação Alguns dados foram recebidos. Chamar a resposta e as propriedades do ResponseText neste estado para obter resultados parciais retornarão um erro, porque os cabeçalhos de status e resposta não estão totalmente disponíveis.
Alguns dados foram recebidos. No entanto, se você ligar para as propriedades Response e RespoteXT no momento para obter alguns resultados, ocorrerá um erro porque os cabeçalhos de status e resposta não estão totalmente disponíveis.
(4) concluído
Todos os dados foram recebidos e os dados completos estão disponíveis nas propriedades ResponseTody e RespoteText.
Todos os dados foram recebidos e os dados completos podem ser extraídos nas propriedades ResponseBody e RespoteText.
De acordo com a introdução dos cinco estados do Estado Ready nos livros acima, acho que "Pragmatic Ajax (site dinâmico estático) Um primer da Web 2.0" está mais implementado, porque menciona o problema da análise de dados recebidos, que não é mencionado em outros livros. Esta é a razão pela qual a interação "(3)" existe como um processo de conversão necessário entre "(2) conclusão de carga" e "(4) conclusão", ou seja, qual é a sua tarefa. Em resumo, acho que o método de explicação ideal deve definir esses estados com precisão e facilidade compreensível no padrão de expressão de "estado: tarefa (objetivo) + processo + desempenho (ou características). O resumo atual do estudo é o seguinte:
Descrição do Status ReadyState
(0) não inicializado
Nesta fase, confirme se o objeto XML (padronização está se aproximando) HttPrequest é criado e prepare -se para chamar o método open () para univialização. Um valor 0 significa que o objeto já existe, caso contrário, o navegador relatará um erro - o objeto não existe.
(1) Carga
Nesse estágio, o objeto XML (padronização está se aproximando cada vez mais) httprequest é inicializado, ou seja, o método open () é chamado para concluir a configuração do estado do objeto de acordo com os parâmetros (método, URL, true). E ligue para o método send () para começar a enviar uma solicitação ao servidor. Um valor de 1 significa que uma solicitação está sendo enviada ao servidor.
(2) O carregamento está concluído
Este estágio recebe os dados de resposta do lado do servidor. Mas o que é obtido são os dados originais da resposta do servidor e não podem ser usados diretamente no cliente. Um valor de 2 significa que os dados de resposta completos foram recebidos. E prepare -se para a próxima etapa da análise de dados.
(3) interação
Nesta fase, os dados de resposta do lado do servidor recebidos são analisados. Ou seja, de acordo com o tipo MIME retornado pelo cabeçalho da resposta do lado do servidor, os dados são convertidos em um formato que pode ser acessado por meio de atributos de resposta, responseText ou ResponseSEXML (a padronização está se aproximando cada vez), preparando as chamadas de clientes. Status 3 significa que os dados estão sendo analisados.
(4) concluído
Nesta fase, confirme que todos os dados foram analisados no formato disponível para o cliente e a análise foi concluída. Um valor de 4 significa que os dados foram analisados. Os dados podem ser obtidos através das propriedades correspondentes do objeto HttPrequest (a padronização está se aproximando cada vez mais).
Em resumo, o ciclo de vida de todo o XML (padronização está se aproximando cada vez mais) o objeto httprequest deve incluir os seguintes estágios:
Criar - Inicialize Solicitação - Enviar Solicitação - Receber Dados - Analisar dados - Concluir
Em aplicações específicas, esclarecer o significado dos cinco estados do Estado Ready (XML (a padronização está se aproximando) e os vários estágios do ciclo de vida do objeto HttPrequest) podem eliminar o mistério do núcleo de Ajax (site estático) (por trás da afirmação vaga é uma maneira mais premiada e misteriosa para criar um sentido; reduzindo a frustração em aprender e aumentar a autoconfiança.
Por exemplo, seguindo o exemplo:
A cópia do código é a seguinte:
// Declare a matriz
var estados = ["Inicializando ...",
“Inicializando o pedido ... bem -sucedido!
Enviando um pedido ... ",
"sucesso!
Recebendo dados ... ",
"Terminar!
Analisando dados ... ",
"Terminar!
”];
// trenó de código interno da função de retorno de chamada
if (xml (padronização está se aproximando) http.readyState == 4)
{
var span = document.createElement ("span");
span.innerhtml = estados [xml (padronização está se aproximando) http.readyState];
document.body.appendChild (span);
if (xml (padronização está se aproximando) http.status == 200)
{
var xml (padronização está se aproximando) doc = xml (a padronização está se aproximando) http.Responsexml (a padronização está se aproximando);
// outro código
}
// Não se esqueça de destruí -lo para impedir o vazamento de memória
xml (padronização está se aproximando) http = null;
}outro{
var span = document.createElement ("span");
span.innerhtml = estados [xml (padronização está se aproximando) http.readyState];
document.body.appendChild (span);
} Os resultados são os seguintes:
Inicializando o pedido ... bem -sucedido!
Enviando um pedido ... bem -sucedido!
Recebendo dados ... concluídos!
Analisando dados ... concluídos!
É fácil entender o que o XML (padronização está se aproximando) o objeto HttPrequest está fazendo em todas as etapas. Portanto, é fácil ter uma compreensão verdadeiramente simples e clara da parte central do Ajax (site dinâmico estático).