Ir para conteúdo

POWERED BY:

Arquivado

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

Gelado

Função parece que não está sendo chamada

Recommended Posts

Fala Galera!

 

Estou começando a mexer com ajax agora, estou desenvolvendo um sistema de cadastro com AJAX mas quando clico em salvar nada acontece.

Ja pesquisei e não encontrei nada que me ajude.. segue as paginas

 

Cadastro.php

<script language="javascript" src="acao.js"></script> 
<form name="frmCadastro" method="post">
<table width="200" border="0" cellpadding="0" cellspacing="0" class="tab-cadastro">
<tr><td width="13%"> <strong>Cadastrar Loja</strong></td>
<td width="87%"></td>
</tr>
<tr><td> </td><td></td></tr>
<tr><td><input name="cad_loja" type="text" /></td><td><input type="button" onClick="cadastrar_reuniao(this.form);" value="Salvar"></td></tr>
</table>
</form>

acao.js

/ Define variável global
var xmlhttp;

function cadastrar_reuniao(varForm) {

// Define variáveis
var varcad_loja;


// Atribui valores as variáveis
varcad_loja  	= escape(varForm.cad_loja.value);


        // Instancia o objeto, dependendo do navagador
        if (window.XMLHttpRequest) {
  xmlhttp = new XMLHttpRequest();  
        } else if (window.ActiveXObject) {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
        } else {
  alert("Seu navegador não suporta XMLHttpRequest.");
  return;
        }

    xmlhttp.open("POST", "brf_acao.php", true); 

    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");
    
        xmlhttp.onreadystatechange = processReqChange;

    xmlhttp.send("cad_loja=" + varcad_loja);
}


function processReqChange() {

        document.getElementById("resposta").innerHTML = "Processando dados...";
  if (xmlhttp.readyState == 4) {      
  if (xmlhttp.status == 200) {
         // xmlhttp.responseText, recebe o valor da variavel $msg de insere.php
  if(xmlhttp.responseText == 1) {
    	document.getElementById("resposta").style.display = "block";
		document.getElementById("resposta").innerHTML = "DADOS CADASTRADOS COM SUCESSO";		
  } else
    	document.getElementById("resposta").innerHTML = xmlhttp.responseText;
  } else {
        alert("Problemas ao carregar o arquivo.");
         }
    							}

}

function exibe(id) {
	if(document.getElementById(id).style.display=="none") {
		document.getElementById(id).style.display = "inline";
	}
	else {
		document.getElementById(id).style.display = "none";
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem vários errinhos, então vou repostar teu código ajustado.

Dê uma estudada:

 

insere.php

<?php
/* insere.php */

	//aqui você faz todo o processo de insert
	echo 'A variavel <strong>cad_loja</strong> chegou com o valor: <strong>'.$_POST['cad_loja'].'</strong>';

acao.js

/* acao.js */
function getHTTPObject(){
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	} 
	else if(window.ActiveXObject){
		var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
		
		for(var i = 0; i < prefixes.length; i++){
			try	{
				return new ActiveXObject(prefixes[i] + ".XMLHTTP");
			} catch (e) {}
		}
	}
}
// Define variável global
var xmlhttp = getHTTPObject();

function cadastrar_reuniao() 
{
	var varcad_loja = escape( id('cad_loja').value );


	xmlhttp.open("POST", "insere.php", true); 

	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	xmlhttp.setRequestHeader("Pragma", "no-cache");

	xmlhttp.onreadystatechange = processReqChange;
	xmlhttp.send("cad_loja=" + varcad_loja);
}
function processReqChange()
{
	id('resposta').innerHTML = "Processando dados...";
	if ( xmlhttp.readyState==4 && xmlhttp.status==200 ){
		if( xmlhttp.responseText==1 ){
			id('resposta').style.display = "block";
			id('resposta').innerHTML = "DADOS CADASTRADOS COM SUCESSO";                
		}
		else
			id('resposta').innerHTML = xmlhttp.responseText;
	}
}
function toggle( id ){
	id( id ).style.display = id( id ).style.display=='none' ? 'inline' : 'none';
}
function id( id ){
	return document.getElementById( id );
}

form.html

<html>
<head>
<script type="text/javascript" src="acao.js"></script>
<style type="text/css">

</style>
</head>
<body>
	<form action="" method="post">
		<label>Cadastrar Loja <input type="text" name="cad_loja" id="cad_loja" /></label>
			<input type="button" onclick="cadastrar_reuniao();" value="Salvar" />
	</form>
	
	<div id="resposta"></div>
</body>
</html>

vai chegar para você na div#resposta:

A variavel cad_loja chegou com o valor: oque digitar no input

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz do seu jeito, não funcionou.. aí eu fui editando e cheguei a isso:

 

var xmlhttp;

function nova_loja(varForm) {

// Define variáveis
var cad_loja;

// Atribui valores as variáveis
varcad_loja = escape(varForm.cad_loja.value);

        // Instancia o objeto, dependendo do navagador
        if (window.XMLHttpRequest) {
  xmlhttp = new XMLHttpRequest();  
        } else if (window.ActiveXObject) {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
        } else {
  alert("Seu navegador não suporta XMLHttpRequest.");
  return;
        }
	
    xmlhttp.open("POST", "brf_acao.php", true); 

    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");
    
        xmlhttp.onreadystatechange = processReqChange;

    xmlhttp.send("cad_loja=" + varcad_loja);
	
}

function processReqChange() {

        document.getElementById("resposta").innerHTML = "Processando dados...";
  if (xmlhttp.readyState == 4) {      
  if (xmlhttp.status == 200) {
         // xmlhttp.responseText, recebe o valor da variavel $msg de insere.php
  if(xmlhttp.responseText == 1) {
    	document.getElementById("resposta").style.display = "block";
		document.getElementById("resposta").innerHTML = "DADOS CADASTRADOS COM SUCESSO";
		alert("Salvo");
  } else
    	document.getElementById("resposta").innerHTML = xmlhttp.responseText;
  } else {
        alert("Problemas ao carregar o arquivo.");
         }
    							}

}

O unico problema é que a não está voltando a resposta, está gravando mas a resposta não vem. Até coloquem um Alert(); como teste no inicio da função processReqChange mas nada aparece.

 

<center><div id="resposta" class="resposta" style="display:none;"></div></center>

Compartilhar este post


Link para o post
Compartilhar em outros sites

retire esse if:

if( xmlhttp.responseText==1 ) {

oque você está retornando no arquivo brf_acao.php ??

poste ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

retire esse if:

if( xmlhttp.responseText==1 ) {

oque você está retornando no arquivo brf_acao.php ??

poste ele.

 

 

Vou tirar esse If e já posto aqui.

 

brf_acao.php

<?php
if(file_exists("config/init.php")) {
require "config/init.php";
} else {
echo "Arquivo init.php não foi encontrado";
exit;
}

if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo config/init.php foi auterado, não existe a função Abre_Conexao";
exit;
}

header("Content-type: text/html; charset=utf-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

// Define variáveis
$msg = null;

$cad_loja = isset($_POST["cad_loja"]) ? $_POST["cad_loja"] : "";


if (trim($cad_loja == "")) {
        $msg = "-> O campo \"Loja\" deve ser preechido ! <br>";
} else {
        
        // Cadastra cliente
		Abre_Conexao();
        $query  = ("INSERT INTO brf_loja(loja) VALUES('$cad_loja')");
        $result = mysql_query($query);
        
        if($result)
  $msg = 1;
        else
  $msg = "Erro ao cadastrar Loja !<br>".mysql_error();
}

if(isset($msg)) {
        echo utf8_encode($msg);
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

retire esse if:

if( xmlhttp.responseText==1 ) {

oque você está retornando no arquivo brf_acao.php ??

poste ele.

 

Tirei, mas ainda não aparece nada.. salva, mas nada aparece.

 

function processReqChange() {

        document.getElementById("resposta").innerHTML = "Processando dados...";
  if (xmlhttp.readyState == 4) {      
  if (xmlhttp.status == 200) {
         // xmlhttp.responseText, recebe o valor da variavel $msg de insere.php
    	document.getElementById("resposta").style.display = "block";
		document.getElementById("resposta").innerHTML = "DADOS CADASTRADOS COM SUCESSO";

  } else
    	document.getElementById("resposta").innerHTML = xmlhttp.responseText;
  } else {
        alert("Problemas ao carregar o arquivo.");
         }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca:

document.getElementById("resposta").innerHTML = "Processando dados...";
  if (xmlhttp.readyState == 4) {      
  if (xmlhttp.status == 200) {
         // xmlhttp.responseText, recebe o valor da variavel $msg de insere.php
        document.getElementById("resposta").style.display = "block";
                document.getElementById("resposta").innerHTML = "DADOS CADASTRADOS COM SUCESSO";

  } else
        document.getElementById("resposta").innerHTML = xmlhttp.responseText;
  } else {
        alert("Problemas ao carregar o arquivo.");
         }
por:

document.getElementById("resposta").innerHTML = "Processando dados...";
if (xmlhttp.readyState == 4) 
{  
	document.getElementById("resposta").style.display = "block";
	document.getElementById("resposta").innerHTML = "DADOS CADASTRADOS COM SUCESSO";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora não está salvando mais.

 

olha o codigo completo

var xmlhttp;function nova_loja(varForm) {// Define variáveisvar cad_loja;// Atribui valores as variáveisvarcad_loja = escape(varForm.cad_loja.value);        // Instancia o objeto, dependendo do navagador        if (window.XMLHttpRequest) {  xmlhttp = new XMLHttpRequest();          } else if (window.ActiveXObject) {   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");          } else {  alert("Seu navegador não suporta XMLHttpRequest.");  return;        }	    xmlhttp.open("POST", "brf_acao.php", true);     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");    xmlhttp.setRequestHeader("Pragma", "no-cache");            xmlhttp.onreadystatechange = processReqChange;    xmlhttp.send("cad_loja=" + varcad_loja);	alert("cad_loja=" + varcad_loja);	}function processReqChange() {document.getElementById("resposta").innerHTML = "Processando dados...";if (xmlhttp.readyState == 4) {          document.getElementById("resposta").style.display = "block";        document.getElementById("resposta").innerHTML = "DADOS CADASTRADOS COM SUCESSO";}}

Estranho, depois do "function nova_loja(varForm) {" coloquei um Alert com um texto qualquer.. aí salvou e exibiu a mensagem... quando eu tirei o Alert não funcionou mais nada ¬¬

 

encontrei o problema, erro meu aqui:

 

antes

<script language="javascript" src="acao.js"></script>

depois

 

<script src="acao.js" type="text/javascript"></script>

 

Agora está indo numa boa.. valeu galera!

 

Não, ele vai quando quer.. =/

então isso não tinha nada a ver :ermm:

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.