Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gavaldão

Função Ajax não grava cadastro

Recommended Posts

tarde amigos.
Depois de muito quebrar a cabeça com meu sistema que so rodava no IE em modo de compatibilidade e em nenhum outro, resolvi começar de novo.
Carrego tudo na div principal, cadastros, pesquisas, etc. e informações de erros, respostas tem de carregar na div container, sobre o bgbody.
quando envio os formulários por submit, redireciona e grava normal, informando OK em outra página.
Quando uso a função gravaPac(), não grava so carrega o bgbody e container.
Alguem pode me ajudar a encontrar esse erro?

MEU INDEX:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>inicio</title>
<link rel="stylesheet" type="text/css" href="css/estilo.css">
<script language="javascript" type="text/javascript" src="js/instrucoes.js"></script>
<script language="javascript" type="text/javascript" src="js/jquery.js"></script>
<script language="javascript" type="text/javascript" src="js/menu.js"></script>
</head>
<body>
<div id="barra"></div>
<div id="menufundo">
<div id="menunav">
<nav>
<ul class="menu">
<li><a href="#">Cadastros</a>
<ul>
<li><a href="#" >Pacientes</a>
<ul>
<li><a href="#" onClick="abrirPag('cad_paciente.php')">Cadastro</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
<div id="wrap">
<div id="principal">
</div>
</div>
<div id="footer"></div>
</body>
</html>

MEU CADASTRO: cadpac.php

<html>
<head>
</head>
<body>
<?php
include "php/funcoes.php"
?>
<form name="cadpac" method="post" action="grava_paciente.php">
<table cellspacing='0' width='1014px' height="495px" bgcolor="#FFFFFF" style="border:1px solid #000">
<tr>
<td valign="top">
<div class='maintitle texto' align="center">Cadastro de Pacientes</div>
<table class='texto maintabela' width="49%" height="95%" align="left" style="margin-left:5px">
<tr>
<td>Nome</td>
<td><input type='text' value='' id='pacnome' name='pacnome' maxlength='70' size='62'>
</td>
</tr>

</table>
</td>
</tr>
</table>
<input type="submit" value="enviar direto"> <input type="button" value="Gravar com ajax" onClick="javascript: gravaPac();">
</form>
</body>
</html>

PAGINA DE GRAVAÇÃO: grava paciente.php

<?php

header("Content-Type: text/html; charset=iso-8859-1");
include "php/funcoes.php";

$erro = 0;
?>

<?php
$pacnome = trataTexto($_POST["pacnome"]);

if(!$pacnome){
echo "0;<center><img src='img/error.jpg'><br>O campo <b>NOME</b> é obrigatório!</center>";
$erro++;
exit;
}


/* ---------------------------------- TRATAMENTO DE NOME JÁ EXISTENTE ---*/
$veNOME = connect();
$veNOME = mysql_query("SELECT pacnome FROM pacientes WHERE pacnome = '$pacnome'");
$veNOME = mysql_fetch_assoc($veNOME);
if($veNOME["pacnome"]){
echo "0;<center><img src='img/error.jpg'><br>Já existe um Paciente com esse NOME!</center>";
$erro++;
exit;
}



/* ---------------------------------- TRATAMENTO DE NOME JÁ EXISTENTE ---*/


if($pacnome != "" && $erro == 0)
{

$query = "INSERT INTO pacientes (pacnome)VALUES('$pacnome')";
$res = mysql_query($query);

if($res == 1)
echo "1;<center><img src='img/ok.gif'><br>Paciente gravado com sucesso!</center>";
exit;

}else
echo "0;<center><img src='img/error.jpg'><br>Houve um erro na gravação!</center>";

exit;

?>

FUNÇÃO AJAX E GRAVAÇÃO:

function openAjax() { //ABRE O AJAX
var ajax;
try {
ajax = new XMLHttpRequest();
} catch(ee) {
try {
ajax = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
} catch(E) {
ajax = false;
}
}
}
return ajax;
}

function gravaPac(){ //GRAVA O Tipo de cliente -- SO USADA NA JANELA DE CADASTRO
var pacnome = gE("pacnome").value;

exibirBgBody();
exibeContainer();
var ajax = openAjax();
var recipiente = gE('container');
ajax.open('POST', 'grava_paciente.php', true);
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajax.onreadystatechange = function() {
if (ajax.readyState == 1) {
loading('container','on');
}
if (ajax.readyState == 4) {
if (ajax.status == 200) {
loading('container','off');
var resposta = ajax.responseText;
resposta = resposta.split(";");
if(resposta[0] == 1){
recipiente.innerHTML = resposta[1];
window.setTimeout("destroyElement('bgBody')",delaywindow);
window.setTimeout("destroyElement('container')",delaywindow);
}
else{
recipiente.innerHTML = resposta[1];
window.setTimeout("destroyElement('bgBody')",delaywindow);
window.setTimeout("destroyElement('container')",delaywindow);
}

}
}
}
ajax.send("pacnome="+pacnome);
}

Desde Já Agradeço
Gavaldão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia Amigos.
Revi a função e coloquei a variável deley dentro dela pois ela estava fora no inicio das funções.
Quanto aos navegadores esta funcionando, pela função objetoXML(), qe cria o objeto em todos navegadores.
Na função gravaPac(), revisi e acrescentei a variável delay, que estava fora como global.
Esá funcionando.
segue função:

function gravaPac(){ //GRAVA O Tipo de cliente -- SO USADA NA JANELA DE CADASTRO
var pacnome = gE("pacnome").value;
exibirBgBody();
exibeContainer();
var ajax = openAjax();
var recipiente = gE('container');
var delaywindow = 1500; //tempo que demora pras janelas de avisos fecharem
ajax.open('POST', 'grava_paciente.php', true);
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajax.onreadystatechange = function() {
if (ajax.readyState == 1) {
loading('container','on');
}
if (ajax.readyState == 4) {
if (ajax.status == 200) {
loading('container','off');
var resposta = ajax.responseText;
resposta = resposta.split(";");
if(resposta[0] == 1){
recipiente.innerHTML = resposta[1];
window.setTimeout("destroyElement('bgBody')",delaywindow);
window.setTimeout("destroyElement('container')",delaywindow);
}
else{
recipiente.innerHTML = resposta[1];
window.setTimeout("destroyElement('bgBody')",delaywindow);
window.setTimeout("destroyElement('container')",delaywindow);
}

}
}
}
ajax.send("pacnome="+pacnome);
}

é isso.

Gratos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola.
testei a função com um umico campo, funcionou más para de funcionar quando o campo é select.
Alguem pode dar uma luz?
O formulário está acima.
o campo slect do formulário é assim

<tr>
<td>Est.Civil</td>
<td><select name='estcivil' onclick='return true' >
<option value=""></option>
<option value="solteiro/a">Solteiro/a</option>
<option value="casado/a">Casado/a</option>
<option value="desquitado/a">Desquitado/a</option>
<option value="divorciado/a">Divorciado/a</option>
<option value="outros">Outros</option>
</select>
</td></tr>
<tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Damon, ainda não, estou tentando por aqui, estou revisando tudo.

Conforme disse na ultima resposta minha, enviei e gravei com um único campo, em todos navegadores, se colocar mais campos no formulário, tudo bem, porem não está enviando se o campo por "select", se tiver campos select só envia pelo IE em modo de compatibilidade, e em nenhum outro.

Tem alguma idéia o que seja

Compartilhar este post


Link para o post
Compartilhar em outros sites
var navegador = navigator.userAgent.toLowerCase(); //Cria e atribui à variável global 'navegador' (em caracteres minúsculos) o nome e a versão do navegador 
//Função que inicia o objeto XMLHttpRequest 
function objetoXML(){ 
 if (navegador.indexOf('msie') != -1) { //Internet Explorer 
 var controle = (navegador.indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário que adiciona o objeto padrão do seu navegador (caso for o IE) à variável 'controle' 
 try{ 
 return xmlhttp = new ActiveXObject(controle); //Inicia o objeto no IE 
 }catch(e){} 
 }else{ //Firefox, Safari, Outros.. 
 return xmlhttp = new XMLHttpRequest(); //Inicia o objeto no Firefox, Safari, Mozilla 
 } 
} 
var xmlhttp = objetoXML(); 

function abrirPag(url){ 
 xmlhttp.onreadystatechange = verificadorDeEstado; 
 xmlhttp.open("GET",url,true); 
 xmlhttp.send(null);  
 if (xmlhttp.readyState == 1) { 
 document.getElementById("principal").innerHTML = "<img src='loader.gif'>"; 
 }  
 return url; 
} 

// Verifica o estado do objeto 
function verificadorDeEstado(div_id){  
 if(xmlhttp.readyState == 4){ // Completo 
 if(xmlhttp.status == 200){ // Resposta do Servidor: OK 
 var local = div_id;  
 document.getElementById("principal").innerHTML = xmlhttp.responseText ; 

 }else{ 
 alert("Problema: " + xmlhttp.statusText); 
 } 
 } 
} 

Essa função é a que uso para abrir as paginas na div principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.