Estou precisando fazer o envio de um formulário sem refresh. Eu pensei no PHP com Ajax, tentei o seguinte. Formulário
<form method="post" ajax="true">
<textarea name="mensagem" id="editor3'.$linha['id_banco_questoes'].'" rows="10" cols="80">
</textarea>
<br>
<input type="hidden" name="idquestao" value="'.$linha['id_banco_questoes'].'">
<input type="hidden" name="usuario" value="'.$_SESSION['usuarioNome'].'">
<input type="submit" value="Submit" />
</form>
JS
<script>
$(document).ready(function(e) {
$("form[ajax=true]").submit(function(e) {
e.preventDefault();
var form_data = $(this).serialize();
var form_url = $(this).attr("action");
var form_method = $(this).attr("method").toUpperCase();
$("#loadingimg").show();
$.ajax({
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
$("#result").html(returnhtml);
$("#loadingimg").hide();
}
});
});
});
</script>
PHP
<?php
require("conexao.php");
$idquestao = $_POST['idquestao'];
$usuariocerto = $_POST['usuario'];
//$telefone = preg_replace("/[^0-9]/", "", $_POST['telefone']);
$mensagem = $_POST['mensagem'];
// Valida se existe algum campo vazio
// Se ouver, retorna a mensagem de erro
if(empty($mensagem)):
echo 'Digite sua mensagem para continuar';
else:
// Dados de conexão com o servidor
// Faz a conexão com o Banco de dados
$mysqli = new mysqli($conexao);
// Verifica se ocorreu algum erro
if (mysqli_connect_errno()):
trigger_error(mysqli_connect_error());
endif;
// Envia os dados pelo método query
$salvar = $mysqli->query("INSERT INTO `notificacao_erro`(`id_questao_erro`, `nomeusuario_erro`, `notificacaoerro`) VALUES ('{$idquestao}', '{$usuariocerto}','{$mensagem}')");
// Valida se as informações foram enviadas com sucesso
if($salvar):
echo 'OK';
else:
echo 'Erro ao salvar sua mensagem';
endif;
endif;
?>
O formulário está sendo enviado para a página do PHP e salvando corretamente, o meu único problema e que está dando refresh de toda forma.