Considere a requisição AJAX construída, no cliente, a...

Próximas questões
Com base no mesmo assunto
Q445744 Programação
Considere a requisição AJAX construída, no cliente, através da chamada à seguinte função em Javascript:

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:
Alternativas

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