Considere a requisição AJAX construída, no cliente, a...
function send (msg)
{
var message = "msg=’" + msg + "’";
var ajax = new XMLHttpRequest ( );
ajax.onreadystatechange = function ( )
{
if (this.readyState == 4 &&
this.status == 200)
alert (this.responseText);
}
ajax.open ("POST", "script.php", true);
ajax.setRequestHeader ("Content-type",
"application/x-www-form-urlencoded");
ajax.setRequestHeader ("Content-length",
message.length);
ajax.setRequestHeader ("Connection",
"close");
ajax.send (message);
}
No servidor, um script em PHP receberá a cadeia de caracteres (string) correspondente a msg, enviada no corpo da requisição. Essa cadeia estará disponível ao script:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: D
Vamos entender por que a alternativa D é a correta. A questão aborda a forma como dados são enviados para o servidor através de uma requisição AJAX utilizando o método POST do protocolo HTTP. Quando uma requisição é feita utilizando esse método, os dados são incluídos no corpo da requisição e não na URL, como é o caso do método GET.
Em PHP, existe uma série de arrays superglobais que são utilizados para acessar informações de diversas fontes. No caso do envio de dados via POST, o PHP fornece o array $_POST para acessar esses dados. Além disso, o array $_REQUEST é um array que contém as informações de $_GET, $_POST e $_COOKIE, tornando-se uma forma genérica de acessar dados de entrada, independentemente do método utilizado na sua submissão.
Portanto, para a cadeia de caracteres msg enviada pelo cliente no corpo da requisição, esta estará disponível no script PHP através dos arrays superglobais $_POST e $_REQUEST, pois foram enviados pelo método POST. Isso justifica a alternativa D como correta:
nos arrays superglobais $_POST e $_REQUEST.
As outras opções são incorretas porque:
- A alternativa A é incorreta, pois o array $_GET é utilizado para dados enviados por meio do método GET na URL, e não para dados enviados no corpo da requisição pelo método POST.
- A alternativa B é incorreta, pois inclui o array $_GET, que não é usado para dados enviados via POST.
- A alternativa C é incorreta pelo mesmo motivo da alternativa B, incluindo o array $_GET indevidamente.
- A alternativa E é incorreta, pois não existe uma variável global $_msg no PHP; os dados são acessados pelos arrays superglobais mencionados.
Espero que essa explicação tenha esclarecido suas dúvidas sobre a questão! Se houver mais alguma pergunta ou um ponto que você queira discutir, fique à vontade para perguntar.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O array superglobal $_POST permite capturar os dados enviados no corpo da mensagem enviada ao servidor através do método POST.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo