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