Ir para conteúdo

POWERED BY:

Arquivado

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

sr.silva

Problemas com código - Inserir

Recommended Posts

Pessoal

 

Utilizo esse código pra tentar inserir o registro no banco via ajax.

 

function add(url) {
	campo	   = escape(document.getElementById('descricao').value); //"escapa" campo descrição
	xmlhttp	 = new ajax();
	xmlhttp.enviar('admin/'+url+'.php?acao=add&nome='+ campo,"POST", false); //manda adicionar
	campo.value = ""; //limpa o campo 1
}

Ok!! O registro está sendo cadastrado e tudo mais, só que ele não aparece na hora. preciso atualizar pra aparecer na minha listagem.

 

O que será que está errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal

 

Utilizo esse código pra tentar inserir o registro no banco via ajax.

 

function add(url) {
	campo	   = escape(document.getElementById('descricao').value); //"escapa" campo descrição
	xmlhttp	 = new ajax();
	xmlhttp.enviar('admin/'+url+'.php?acao=add&nome='+ campo,"POST", false); //manda adicionar
	campo.value = ""; //limpa o campo 1
}

Ok!! O registro está sendo cadastrado e tudo mais, só que ele não aparece na hora. preciso atualizar pra aparecer na minha listagem.

 

O que será que está errado?

na ultima linha desta função coloca o seguinte:

 

document.getElementById('nome_do_div_da_listagem_aki').innerHTML = xmlhttp.responseText;

 

se não funcionar... responde ae!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo desculpe pela ignorância.

 

Mais nesse caso qual seria a "div" que devo colocar??

 

==

 

Aproveitando a ajuda, pra eu carregar as minhas páginas vindas do menu. Como eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja aonde está aparecendo a sua listagem q você precisa que atualize nahora...

 

se estiver dentro de uma DIV ... coloque ela ali onde indiquei...

 

se não tiver... faça assim:

 

<div id="listagem">

 

...o codigo onde ta a listagem...

 

</div>

 

dai a linha ficaria assim:

 

document.getElementById('listagem').innerHTML = xmlhttp.responseText;

 

entendeu???

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo não deu certo.. :wacko:

 

vou deixar o código aqui

 

pagina.php

<table width="75%" border="0" align="center" class="bordasimples">
  <tr> 
	<td colspan="2" bgcolor="#F3F3F3"> <p class="titulos-cadastros">CATEGORIAS</p></td>
  </tr>
  <tr> 
	<td width="8%" height="19"><p class="titulos-campos">Descrição:</p></td>
	<td width="92%" height="19"><div align="left"> 
		<input name="descricao" type="text" id="descricao" size="50" >
	  </div></td>
  </tr>
  <tr> 
	<td height="19" colspan="2">
		<div align="center"><input name="salvar" type="submit" id="salvar" value="Salvar" onclick="add('categorias');" /></div>	
	</td>
  </tr>
</table>
  <hr width="400">
<br>
<div id="listagem">
<table width="75%" border="0" align="center" class="bordasimples" id="tabela">
  <tr> 
	<td colspan="3" bgcolor="#F3F3F3"><div align="left" class="titulos-cadastros">DESCRIÇÃO</div></td>
  </tr>
<tr>		
  <td><? echo ($row['descricao']) ?></td>
  <td><img src='../site/images/admin/delete.jpg' width='14' height='14' border='0'></a></td>
</table>
</div>

add.js

function add(url) {
	campo	   = escape(document.getElementById('descricao').value); //"escapa" campo descrição
	xmlhttp	 = new ajax();
	xmlhttp.enviar('admin/'+url+'.php?acao=add&nome='+ campo,"POST", false); //manda adicionar
	document.getElementById('descricao').innerHTML = xmlhttp.responseText;		
	campo.value = ""; //limpa o campo 1	
	document.getElementById('listagem').innerHTML = xmlhttp.responseText;	
}

 

Quando eu executei a ação ADD(), retornou...undefined :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando o tópico.

 

Os códigos abaixos são para executar a ação de Inserir ( dúvida continua ) e colocar um carregando .

 

Ok?

 

Só que o "carregando" continua na tela. A dúvida é: Como faço pra ao final da add() o "carregando" suma??

 

E caso eu queira cadastrar novamente ele respeitar os valores atribuidos.

 

function add(url) {
	campo	   = escape(document.getElementById('descricao').value); 
	if (sajax.readyState < 4 ){	
		carregando(url);
	}else{	
		xmlhttp	 = new ajax();	
		xmlhttp.enviar('admin/'+url+'.php?acao=add&nome='+ campo,"POST", false); 
		campo.value = ""; 	
		document.getElementById('listagem').innerHTML = xmlhttp.responseText;
	}
}

function carregando(url){
	sajax.open ('POST','admin/'+url+'.php');	
	sajax.onreadystatechange = function(){
		if (sajax.readyState == 1 ){
				document.getElementById('listagem').innerHTML = '<img src="images/admin/ajax_loader.gif" title="Carregando..."/> Carregando...';
				document.getElementById('listagem').className = 'loading';
		   }
	}
	sajax.send(null);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo não deu certo.. :wacko:

 

vou deixar o código aqui

 

pagina.php

<table width="75%" border="0" align="center" class="bordasimples">
  <tr> 
	<td colspan="2" bgcolor="#F3F3F3"> <p class="titulos-cadastros">CATEGORIAS</p></td>
  </tr>
  <tr> 
	<td width="8%" height="19"><p class="titulos-campos">Descrição:</p></td>
	<td width="92%" height="19"><div align="left"> 
		<input name="descricao" type="text" id="descricao" size="50" >
	  </div></td>
  </tr>
  <tr> 
	<td height="19" colspan="2">
		<div align="center"><input name="salvar" type="submit" id="salvar" value="Salvar" onclick="add('categorias');" /></div>	
	</td>
  </tr>
</table>
  <hr width="400">
<br>
<div id="listagem">
<table width="75%" border="0" align="center" class="bordasimples" id="tabela">
  <tr> 
	<td colspan="3" bgcolor="#F3F3F3"><div align="left" class="titulos-cadastros">DESCRIÇÃO</div></td>
  </tr>
<tr>		
  <td><? echo ($row['descricao']) ?></td>
  <td><img src='../site/images/admin/delete.jpg' width='14' height='14' border='0'></a></td>
</table>
</div>

add.js

function add(url) {
	campo	   = escape(document.getElementById('descricao').value); //"escapa" campo descrição
	xmlhttp	 = new ajax();
	xmlhttp.enviar('admin/'+url+'.php?acao=add&nome='+ campo,"POST", false); //manda adicionar
	document.getElementById('descricao').innerHTML = xmlhttp.responseText;		
	campo.value = ""; //limpa o campo 1	
	document.getElementById('listagem').innerHTML = xmlhttp.responseText;	
}

 

Quando eu executei a ação ADD(), retornou...undefined :blink:

- Tire tudo o que eu falei pra você fazer até agora, menos a div 'listagem' que você adicionou no html...

 

- Adicione este id na imagem de preload... <img src="images/admin/ajax_loader.gif" title="Carregando..." id="loading" />

 

já sei como fazer, espero que de certo, ai vai (mude o q está de vermelho):

 

e adiciona esta nova função no seu script.

-------------------------------------------------------------------------------------------------------------

 

function add(url) {

campo = escape(document.getElementById('descricao').value); //"escapa" campo descrição

xmlhttp = new ajax();

xmlhttp.enviar('admin/'+url+'.php?acao=add&nome='+ campo,"POST", false); //manda adicionar

document.getElementById('descricao').innerHTML = xmlhttp.responseText;

atualizaListagem();

campo.value = ""; //limpa o campo 1

}

 

function atualizaListagem() {

var xmlhttp = ajax();

xmlhttp.onreadystatechange = function() {

var listagem = getElementById('listagem');

if (xmlhttp.readyState == 1) {

carregando(url);

}

if (xmlhttp.readyState == 4) {

if (xmlhttp.status == 200) {

var imgLoad = getElementById('loading');

if (imgLoad) {

imgLoad.parentNode.removeChild(imgLoad);

}

listagem.innerHTML = xmlhttp.responseText;

}

}

}

xmlhttp.send(null);

}

 

----------------------------------------------------------------------------------------------------

PRONTO!! E PODE DEIXAR A FUNÇÃO CARREGANDO FUNCIONANDO TBM!! ABRAÇOS!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem..infelizmente não funcionou.

 

Ao executar a ação veja o erro que apareceu

 

Erro: uncaught exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]"  nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)"  location: "JS frame :: http://localhost/js/funcoes.js :: atualizaListagem :: line 104"  data: no]

A linha em questão é essa

 

sajax.send(null);

Esqueci de mencionar que o código utilizado pra setar o Ajax não contem a propriedade open

 

function ajax() {};
ajax.prototype.iniciar = function() {
	try{
		this.xmlhttp = new XMLHttpRequest();
	}catch(ee){
		try{
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(E){
				this.xmlhttp = false;
			}
		}
	}
	return true;
}

ajax.prototype.ocupado = function() {
	estadoAtual = this.xmlhttp.readyState;
	return (estadoAtual && (estadoAtual < 4));
}

ajax.prototype.processa = function() {
	if (this.xmlhttp.readyState == 4 && this.xmlhttp.status == 200) {
		return true;
	}
}

ajax.prototype.enviar = function(url, metodo, modo) {
	if (!this.xmlhttp) {
		this.iniciar();
	}
	if (!this.ocupado()) {
		if(metodo == "GET") {
			this.xmlhttp.open("GET", url, modo);
			this.xmlhttp.send(null);
		} else {		
			this.xmlhttp.open("POST", url, modo);
			this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			this.xmlhttp.send(url);
		}	
		
		if (this.processa) {
			return unescape(this.xmlhttp.responseText.replace(/\+/g," "));
		}
	}
	return false;
}

No entanto, fazendo buscas vi que num código de "carregando" daqui do fórum tinha esse script para o AJAX

 

try{
	sajax = new XMLHttpRequest(); 
}catch(ee){
	try{
		sajax = new ActiveXObject("Msxml2.XMLHTTP"); 
	}catch(e){
		try{
			sajax = new ActiveXObject("Microsoft.XMLHTTP"); 
		}catch(E){
			sajax = false;
		}
	}	
}

Foi ai que uso o xmlhttp = new ajax(); pra Inserir e o sajaxonreadystatechange = function() { pra fazer o "loading..."

 

Não estou utilizando o "Sajax" mais sim denominei apenas pra diferenciar, já que as duas funções tem o mesmo nome.

 

Conseguiu entender essa confusão ??

 

Resumindo...estou com dois códigos pra setar o AJAX, um pra inserir e o outro para o loading. Fiz isso porque não consegui adaptar para as duas funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

Esqueci de colocar...eu uso duas funções porque nessa linha

 

xmlhttp.onreadystatechange = function() {
}

Retorna dizendo que o objeto não possui a propriedade.

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.