danielfpaiva Posted November 6, 2018 at 12:01 AM Report #612297 Posted November 6, 2018 at 12:01 AM Boa noite, Eu tenho um formulário com o seguinte código: <div class="form-wrap" id="contact-form"> <div class="form-innerwrap"> <div class="text-input"> <input type="text" name="name" id="name" required /> <label for="name"><?= CONTACT_FORM_NAME ?></label> </div> <div class="text-input"> <input type="email" name="email" id="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" required /> <label for="email">E-mail</label> </div> <div class="text-input"> <input type="text" name="contact" id="contact" required /> <label for="name"><?= CONTACT ?></label> </div> <div class="text-input text-textarea"> <textarea type="info" id="info" name="info"> </textarea> <label for="email"><?= CONTACT_FORM_MENSSAGE ?></label> </div> <input type="hidden" name="lang" id="lang" value="<?= $_SESSION['language'] ?>"> <div class="form-button"> <button type="submit" class="btn contacts-button btn-gowe" id="btn-info" data-btnhover="<?= CONTACT_FORM_BTN ?>"> <span><?= CONTACT_FORM_BTN ?></span> </button> </div> </div> </div> e quando clico no botão btn-info é realizado um pedido ajax para enviar a informação para o PHP utilziando o seguinte código: $("#btn-info").click(function(){ var name = $("#name").val(); var email = $("#email").val(); var contact = $("#contact").val(); var info = $("#info").val(); var lang = $("#lang").val(); // Returns successful data submission message when the entered information is stored in database. var dataString = 'name='+ name + '&email='+ email +'&contact='+contact+'&info='+info+'&lang='+lang; $.ajax({ type: "POST", url: "includes/sendEmail.php", data: dataString, cache: false, success: function(result){ var result = result.split("||"); if (result[0]== "true"){ $("#contact-modal").show(); } } }); return false; }); No entanto quando faço var_dump($_REQUEST); é devolvido um array vazio. Será que alguém me pode ajudar a perceber qual é o erro? Eu já estive várias horas a tentar perceber o problema e não consegui descobrir qual é o problema. Obrigado pela ajuda.
washalbano Posted November 6, 2018 at 12:42 AM Report #612298 Posted November 6, 2018 at 12:42 AM Olá! Você precisa verificar no seu arquivo includes/sendEmail.php, se está trabalhando com o médoto post Abra a aba network no devtools do browser, e certifique-se de que as variáveis e valores estão chegando corretamente.
jmta_92 Posted November 6, 2018 at 03:55 PM Report #612306 Posted November 6, 2018 at 03:55 PM 15 horas atrás, danielfpaiva disse: Boa noite, Eu tenho um formulário com o seguinte código: <div class="form-wrap" id="contact-form"> <div class="form-innerwrap"> <div class="text-input"> <input type="text" name="name" id="name" required /> <label for="name"><?= CONTACT_FORM_NAME ?></label> </div> <div class="text-input"> <input type="email" name="email" id="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" required /> <label for="email">E-mail</label> </div> <div class="text-input"> <input type="text" name="contact" id="contact" required /> <label for="name"><?= CONTACT ?></label> </div> <div class="text-input text-textarea"> <textarea type="info" id="info" name="info"> </textarea> <label for="email"><?= CONTACT_FORM_MENSSAGE ?></label> </div> <input type="hidden" name="lang" id="lang" value="<?= $_SESSION['language'] ?>"> <div class="form-button"> <button type="submit" class="btn contacts-button btn-gowe" id="btn-info" data-btnhover="<?= CONTACT_FORM_BTN ?>"> <span><?= CONTACT_FORM_BTN ?></span> </button> </div> </div> </div> e quando clico no botão btn-info é realizado um pedido ajax para enviar a informação para o PHP utilizando o seguinte código: $("#btn-info").click(function(){ var name = $("#name").val(); var email = $("#email").val(); var contact = $("#contact").val(); var info = $("#info").val(); var lang = $("#lang").val(); // Returns successful data submission message when the entered information is stored in database. var dataString = 'name='+ name + '&email='+ email +'&contact='+contact+'&info='+info+'&lang='+lang; $.ajax({ type: "POST", url: "includes/sendEmail.php", data: dataString, cache: false, success: function(result){ var result = result.split("||"); if (result[0]== "true"){ $("#contact-modal").show(); } } }); return false; }); No entanto quando faço var_dump($_REQUEST); é devolvido um array vazio. Será que alguém me pode ajudar a perceber qual é o erro? Eu já estive várias horas a tentar perceber o problema e não consegui descobrir qual é o problema. Obrigado pela ajuda. Adicione ao pedido ajax estas 2 opçoes: processData: false, contentType: false, no php em vez de var_dump($_REQUEST); faça var_dump($_POST);
danielfpaiva Posted November 10, 2018 at 02:46 PM Author Report #612332 Posted November 10, 2018 at 02:46 PM Em 06/11/2018 às 15:55, jmta_92 disse: Adicione ao pedido ajax estas 2 opçoes: processData: false, contentType: false, no php em vez de var_dump($_REQUEST); faça var_dump($_POST); Continua a não funcionar e a devolver um array vazio
danielfpaiva Posted November 12, 2018 at 07:46 PM Author Report #612345 Posted November 12, 2018 at 07:46 PM Em 06/11/2018 às 00:42, washalbano disse: Olá! Você precisa verificar no seu arquivo includes/sendEmail.php, se está trabalhando com o médoto post Abra a aba network no devtools do browser, e certifique-se de que as variáveis e valores estão chegando corretamente. Eu reparei que no Network está a devovler o status 302 mas não sei o que isso significa
danielfpaiva Posted November 12, 2018 at 10:53 PM Author Report #612346 Posted November 12, 2018 at 10:53 PM Já consegui resolver o problema estava relacionado com o facto de ter estas duas linhas no ficheiro .htaccess # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L,NC] ## To internally redirect /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME}.php -f [NC] RewriteRule ^ %{REQUEST_URI}.php [L]
Vitor Leal Posted November 20, 2018 at 09:49 AM Report #612427 Posted November 20, 2018 at 09:49 AM Em 06/11/2018 às 00:01, danielfpaiva disse: Boa noite, Eu tenho um formulário com o seguinte código: <div class="form-wrap" id="contact-form"> <div class="form-innerwrap"> <div class="text-input"> <input type="text" name="name" id="name" required /> <label for="name"><?= CONTACT_FORM_NAME ?></label> </div> <div class="text-input"> <input type="email" name="email" id="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" required /> <label for="email">E-mail</label> </div> <div class="text-input"> <input type="text" name="contact" id="contact" required /> <label for="name"><?= CONTACT ?></label> </div> <div class="text-input text-textarea"> <textarea type="info" id="info" name="info"> </textarea> <label for="email"><?= CONTACT_FORM_MENSSAGE ?></label> </div> <input type="hidden" name="lang" id="lang" value="<?= $_SESSION['language'] ?>"> <div class="form-button"> <button type="submit" class="btn contacts-button btn-gowe" id="btn-info" data-btnhover="<?= CONTACT_FORM_BTN ?>"> <span><?= CONTACT_FORM_BTN ?></span> </button> </div> </div> </div> e quando clico no botão btn-info é realizado um pedido ajax para enviar a informação para o PHP utilziando o seguinte código: $("#btn-info").click(function(){ var name = $("#name").val(); var email = $("#email").val(); var contact = $("#contact").val(); var info = $("#info").val(); var lang = $("#lang").val(); // Returns successful data submission message when the entered information is stored in database. var dataString = 'name='+ name + '&email='+ email +'&contact='+contact+'&info='+info+'&lang='+lang; $.ajax({ type: "POST", url: "includes/sendEmail.php", data: dataString, cache: false, success: function(result){ var result = result.split("||"); if (result[0]== "true"){ $("#contact-modal").show(); } } }); return false; }); No entanto quando faço var_dump($_REQUEST); é devolvido um array vazio. Será que alguém me pode ajudar a perceber qual é o erro? Eu já estive várias horas a tentar perceber o problema e não consegui descobrir qual é o problema. Obrigado pela ajuda. Boas! No jQuery tu consegues poupar imenso trabalho ao usar a função jQuery "serialize". "The .serialize() method creates a text string in standard URL-encoded notation. It can act on a jQuery object that has selected individual form controls, such as <input>, <textarea>, and <select>: $( "input, textarea, select" ).serialize();" Ou então usas a função serializeArray(). "The .serializeArray() method creates a JavaScript array of objects, ready to be encoded as a JSON string. It operates on a jQuery collection of forms and/or form controls." Na resposta de um ficheiro php durante um pedido de ajax é aconselhável converter a resposta para json_encode e de seguida fazer um $.parseJSON(data) no success do ajax. É só uma dica.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now