Pular para o conteúdo principal

Enviar valor de checkbox com Ajax XMLHttpRequest e PHP

Enviar valor de checkbox com Ajax XMLHttpRequest e PHP - Publicado por: Wellington Pragidi Desenvolvedor Web

Há um bom tempo que não utilizo mais o jQuery. Embora tenha sido uma ferramenta útil, especialmente para simplificar tarefas como o envio de solicitações Ajax do lado do servidor, porém agora não é mais necessário carregar um arquivo JavaScript tão extenso, especialmente para tarefas mais simples. Atualmente, prefiro empregar o XMLHttpRequest para envio de requisições, apesar das recomendações frequentes para adotar a função fetch. No entanto, estou confortável com minha abordagem atual. Sem mais delongas, vamos ao que interessa.

HTML:

PHP:

$assuntos = "";
foreach($_POST["assunto"] as $assunto) {
    $assuntos .= "
  • $assunto
  • "; } $nome = $_POST["nome"]; $email = $_POST["email"]; echo "
      $assuntos

    Nome: $nome

    Marca: $email

    ";

    JavaScript:

    var formit = document.querySelector("#formit");
    var callback = document.getElementById("callback");
    formit.addEventListener("submit", event => {
    	event.preventDefault();
    	var fData = new FormData();
    	var assuntos = document.querySelectorAll(".ckb");
    	for(var i = 0; i <= assuntos.length - 1; i++) {
    		if(assuntos[i].checked) {
    			fData.append('assunto[]', document.getElementById(assuntos[i].id).value);
    		}
    	}
    	fData.append('nome', document.querySelector("#nome").value);
    	fData.append('email', document.querySelector("#email").value);
    	var xhr = new XMLHttpRequest();
        xhr.open("POST", "action.php");
        xhr.onload = function () {
    	    if (this.status == 200) {
    	    	callback.style.color = "green";
    	        callback.innerHTML = this.response;
    	    } else {
    	    	callback.style.color = "red";
    	        callback.innerHTML = "Ocorreu algum erro.";
    	    }
        };
        xhr.send(fData);
    });
    Categorias: HTML, JavaScript, PHP