Ir para conteúdo

Arquivado

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

Pita

Ajax e Formularios

Recommended Posts

Estou com problemas no seguinte: utilizo ajax para carregar conteudo em div, quando clico em voltar no navegador ele volta para o início da página, tem como ele voltar para a ação anterior?ex: tenho link noticia e enquete, o usuario entro em noticia, depois foi para enquetes, ele quer voltar para noticia, ele clica em voltar, porem o site volta ao início e não a noticias que era a ação anterior.tem como solucionar isso? qual método?

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, brunoww, funcionou legal !!!! obrigado !!!Mas estou com um outro problema, as palavras com acento são apresentadas na minha "id_target" como "?", qualquer tipo de acento. ´`~^¨, vem sempre ? no lugar.O que tenho que fazer pra ficar normal ??Obs: No I.E. tanto ajaxLink quanto o ajaxForm as palavras acentuadas vem com erro, mas no FF apenas no ajaxForm vem com erro de acentuação.

Não intendi muito bem, mais se for problemas de acentuacoes tem um topico exclusivo falando nisso:http://forum.imasters.com.br/index.php?showtopic=173603

Estou com problemas no seguinte: utilizo ajax para carregar conteudo em div, quando clico em voltar no navegador ele volta para o início da página, tem como ele voltar para a ação anterior?ex: tenho link noticia e enquete, o usuario entro em noticia, depois foi para enquetes, ele quer voltar para noticia, ele clica em voltar, porem o site volta ao início e não a noticias que era a ação anterior.tem como solucionar isso? qual método?

Po, eu nao sei se da, mais acho que com o codigo do Pita não tem como voltar, pois mudou o conteudo do div, você pode fazer um botao com a funca ajaxLink para a pagina passada(acho que pode usar o java script:historiback-1) e o target...Talvez ajude...Flws ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Pessoal, fui testar usar esta função ajax numa aplicação no padrão MVC (Java/JSP/Servlets), e ao usar a função ajaxForm() qdo no action do form está ACTControle.do não funciona, alguém poderia me dizer o pq ??

 

2 - Para resolver o problema com acentuação usei a função escape do javascript, modifiquei a seguinte função do script, ficou assim:

<code>

//FUNCAO PARA PEGAR OS ELEMENTOS DO FORM

function BuscaElementosForm(idForm) {

var elementosFormulario = document.getElementById(idForm).elements;

var qtdElementos = elementosFormulario.length;

var queryString = "";

var elemento;

 

//Cria uma funcao interna para concatenar os elementos do form

this.ConcatenaElemento = function(nome,valor) {

if (queryString.length>0) {

queryString += "&";

}

queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);

};

 

//Loop para percorrer todos os elementos

for (var i=0; i<qtdElementos; i++) {

//Pega o elemento

elemento = elementosFormulario;

if (!elemento.disabled) {

//Trabalha com o elemento caso ele nao esteja desabilitado

switch(elemento.type) {

//Realiza a acao dependendo do tipo de elemento

case 'text': case 'password': case 'hidden': case 'textarea':

this.ConcatenaElemento(elemento.name,escape(elemento.value));

break;

case 'select-one':

if (elemento.selectedIndex>=0) {

this.ConcatenaElemento(elemento.name,escape(elemento.options[elemento.selectedIn

dex].value));

}

break;

case 'select-multiple':

for (var j=0; j<elemento.options.length; j++) {

if (elemento.options[j].selected) {

this.ConcatenaElemento(elemento.name,escape(elemento.options[j].value));

}

}

break;

case 'checkbox': case 'radio':

if (elemento.checked) {

this.ConcatenaElemento(elemento.name,escape(elemento.value));

}

break;

}

}

}

return queryString;

}

</code>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Estou tendo problemas ao passar o caracter:

_

 

Tô usando PHP.

Sim, quando tiro o "_" funciona perfeitamente...

 

Só que eu tenho muitos inputs com "_"

 

Qual solução?

 

Alguém?

 

Obrigado desde já pessoal.

 

 

Fui. :D

 

 

EDITADO:

Lembrando: Acontece no IE 6.0 só que no 7.0 e no FF (qualquer versão) funciona perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou chamando no link assim a função

<a href="java script:AjaxLink('conteudo','teste.html');">History</a>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">

<head>

<link href="css/menu_css.css" rel="stylesheet" type="text/css">

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

 

<style>

 

 

#esquerda {

width:30%;

padding-left:5px;

padding-top:7px;

float:left;

}

 

#conteudo {

width:50%;

padding-left:5px;

padding-top:7px;

float:left;

}

 

#direita {

width:20%;

padding-left:5px;

padding-top:7px;

float:right;

}

 

 

</style>

 

<script type="text/javascript">

function IEHoverPseudo() {

 

var navItems = document.getElementById("primary-nav").getElementsByTagName("li");

 

for (var i=0; i<navItems.length; i++) {

if(navItems.className == "menuparent") {

navItems.onmouseover=function() { this.className += " over"; }

navItems.onmouseout=function() { this.className = "menuparent"; }

}

}

 

}

window.onload = IEHoverPseudo;

</script>

 

</head>

<body>

 

<div id="esquerda">

<ul id="primary-nav">

<li><a href="#">Home</a></li>

 

<li class="menuparent"><a href="#">About</a>

<ul>

<li><a href="java script:AjaxLink('conteudo','teste.html');">History</a></li>

<li><a href="#">Team</a></li>

<li><a href="#">Offices</a></li>

</ul>

</li>

 

<li class="menuparent"><a href="#">Services</a>

<ul>

<li><a href="#">Web Design</a></li>

<li><a href="#">Internet Marketing</a></li>

<li class="menuparent"><a href="#">Hosting</a>

<ul>

<li><a href="#">Dedicated</a></li>

 

<li><a href="#">Virtual</a></li>

<li><a href="#">Shared</a></li>

<li><a href="#">Managed</a></li>

</ul>

</li>

<li><a href="#">Domain Names</a></li>

<li><a href="#">Broadband</a></li>

 

</ul>

</li>

<li class="menuparent"><a href="#">Contact Us</a>

<ul>

<li><a href="#">United Kingdom</a></li>

<li><a href="#">France</a></li>

<li><a href="#">USA</a></li>

 

<li><a href="#">Australia</a></li>

</ul>

</li>

</ul>

</div>

 

 

<div id="conteudo">

 

</div>

 

</body>

</html>

ali aonde esta em vermelho chamo a função do formulario do pita .

pq esta dando erro na linha 1 caracter 1 , Objeto esperado

 

 

ali na parte do java script nao esta juntando e ficando javascript aqui no forum , no meu script ta tudo junto !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kamikase,Eu fiz uns testes aqui usando "_" no nome do input e colocando "_" no valor do input e funcionou corretamente tanto no IE quanto no FirefoxAqui no meu teste estou utilizando ASPAcho que deve ser um problema mais com o PHP do que com o código Javascript em síTem alguem que esteja usando PHP testar este caso??Tks

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou com um problema , quando o usuario clica no link abre na div conteudo as subcategorias dos produtos . AI quando o usuario clicar nessas subcategorias vai abrir uma pagina com as subcategorias e os preços . quando o usuario clicar no carrinho vai buscar ã função hidden do javascript para calcular o valor total do produto e depois vai joga num campo hidden na div rodape . o meu problema esta sendo resgar esse valor total sendo que eu ja passei por duas paginas .

a sequencia do codigo esta sendo a sequencia da minha pagina tb .

index.php

 

<script>

var total = 0;

function hidden(recebe,id,cod,qtd) {

var quantidade = document.getElementById(id).value;

total += parseFloat(recebe) * parseFloat(quantidade);

//alert(parseFloat(recebe) + " * " + parseFloat(quantidade) + " = " + total);

document.getElementById("rodape").innerHTML = "<input type=\"hidden\" value=\"" + total + "\" name=\"preco\" ><input type=\"hidden\" value=\"" + cod + "\" name=\"cod_produto\"><input type=\"hidden\" value=\"" + qtd + "\" name=\"quantidade\">";

 

}

</script>

<a href="java script:ajaxLink('conteudo','pagina.php?categoria=<?=$categoria?>');"> <?=$categoria?> </a>

pagina.php

<td width="100"> <img src="img/carrinho.jpg" onclick="hidden('<?=$preco?>','qtd<?=$i?>','<?=$cod_produto?>',qtd<?=$i?>.value);ajaxLink('rodape','total_preco.php'>');"> </td>

o meu problema ta ali em vermelho , como eu passo o valor da variavel preco da função hidden da pagina index.php para a pagina total_preco.php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí nem é problema com ajax, é javascript com html mesmo, esse preco provavelmente entá em um input, aí você pode usar alguma coisa do tipo:

 

window.parent.getElementById('nome_input_preco').value

Dá uma olhada em parent, ele retorna o objeto que abriu a janela atual

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tentei e nao deu certo :

 

<img src="img/carrinho.jpg" onclick="hidden('<?=$preco?>','qtd<?=$i?>','<?=$cod_produto?>',qtd<?=$i?>.value);ajaxlink('rodape','total_preco.php?preco='+ window.parent.document.getElementById('preco').value);">

eu tb tentei assim :

 

<img src="img/carrinho.jpg" onclick="hidden('<?=$preco?>','qtd<?=$i?>','<?=$cod_produto?>',qtd<?=$i?>.value);ajaxlink('rodape','total_preco.php?preco='+ window.parent.getElementById('preco').value);">

e coloquei a id no hidden :

 

<script>var total = 0;function hidden(recebe,id,cod,qtd) {  var quantidade = document.getElementById(id).value;  total += parseFloat(recebe) * parseFloat(quantidade);  alert(parseFloat(recebe) + " * " + parseFloat(quantidade) + " = " + total);  document.getElementById("rodape").innerHTML = "<input type=\"hidden\" id=\"preco\" value=\"" + total + "\" name=\"preco\" ><input type=\"hidden\" value=\"" + cod + "\" name=\"cod_produto\"><input type=\"hidden\" value=\"" + qtd + "\" name=\"quantidade\">";}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, isso não vai funcionarA chamada do ajaxLink não é um código javascript, é código HTML, então ele não consegue resolver a instrução javascript 'total_preco.php?preco='+ window.parent.getElementById('preco').value

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu chamo a função aqui :

 

<script>var total = 0;function hidden(recebe,id,cod,qtd) {   var quantidade = document.getElementById(id).value;   total += parseFloat(recebe) * parseFloat(quantidade);   alert(parseFloat(recebe) + " * " + parseFloat(quantidade) + " = " + total);   document.getElementById("rodape").innerHTML = "<input type=\"hidden\" id=\"preco\" value=\"" + total + "\" name=\"preco\" \/><input type=\"hidden\" value=\"" + cod + "\" name=\"cod_produto\" \/><input type=\"hidden\" value=\"" + qtd + "\" name=\"quantidade\"\/>";ajaxLinkTarget = "rodape";ajaxLinkPreco = window.parent.document.getElementById('preco').value;ajaxLinkUrl = 'total_preco.php?preco=' + ajaxLinkPreco;ajaxLink(ajaxLinkTarget, ajaxLinkUrl);}</script>

problema resolvido , é pq o IE nao atualizo , deve ser problema de cache pra variar . ai quando cheguei no meu trampo hoje tava tudo normal .

Se for pra lançar algo decente a microsoft deveria ter lançado faz tempo esse ie7.

 

vlw galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu nao funciona no FF ... alguem sabe o pq? poderia auxliar? http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Ao clicar no botao, nao faz nada...

No IE funciona certo.

 

// ajax enquete   var http_request = false;   function makePOSTRequest(url, parameters) {	  http_request = false;	  if (window.XMLHttpRequest) { // Mozilla, Safari,...		 http_request = new XMLHttpRequest();		 if (http_request.overrideMimeType) {		 	// set type accordingly to anticipated content type			//http_request.overrideMimeType('text/xml');			http_request.overrideMimeType('text/html');		 }	  } else if (window.ActiveXObject) { // IE		 try {			http_request = new ActiveXObject("Msxml2.XMLHTTP");		 } catch (e) {			try {			   http_request = new ActiveXObject("Microsoft.XMLHTTP");			} catch (e) {}		 }	  }	  if (!http_request) {		 alert('Cannot create XMLHTTP instance');		 return false;	  }	  http_request.onreadystatechange = alertContents;	  http_request.open('POST', url, true);	  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	  http_request.setRequestHeader("Content-length", parameters.length);	  http_request.setRequestHeader("Connection", "close");	  http_request.send(parameters);   }   function alertContents() {	  if (http_request.readyState == 4) {		 if (http_request.status == 200) {			//alert(http_request.responseText);			result = http_request.responseText;			document.getElementById('enquete').innerHTML = result;	  // div onde vai aparecer o resultado		 } else {			alert('There was a problem with the request.');		 }	  }   }   function get(obj) {	  var poststr = "resposta=" + encodeURI( document.getElementById("resposta").value )+					"&idenquete=" + encodeURI( document.getElementById("idenquete").value ); // pega os dados do formulario	  makePOSTRequest('/votar.php?act=votar', poststr);  // url e dados do formulario que foram pegos da linha anterior   }// fim ajax enquete

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja achei o problema... era no formulario ... hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

To voando.... Isso ta certo?

 

OBS:: COloquei esse script no arquivo ajax2.js

<script src="ajax2.js" type="text/javascript" language="javascript"></script><div id="postarcomentario">	<legend>Deixe Seu Comentário</legend>		<form name="form" method="post" action="" onSubmit='return false;' >			<textarea			name=texto rows="10" id="texto" cols="50"></textarea>		  <input type="button" name="Submit" value="Cadastrar" onClick="ajaxLink('postarcomentario','posta_comentario.php)"> 	   </form></div>

Obs esse legend vai ser retirado é que só editei um campo para para testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vai pq em arquivo .js só pode ter instruções javascript e nesse caso tem coisa HTML,Sem falar que você está se autoreferenciando(existe essa palavra??)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Heh nops cara acho que não me expessei direito.No ajax2.js está só o seu código A JAVA que esta la no começo.Coloquei seu código no ajax2.js e to fazendo isso ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quiser que o seu botão funcione como um link, sem enviar os dados do formulario, vai funcionar, mas que você quiser que os dados do formulario sejam enviados, aí você vai ter que usar o ajaxFormajaxForm('postarcomentario','form')só não esquece de colocar o action do form

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim?

<div id="postarcomentario"> <legend>Deixe Seu Comentário</legend> <form id="formcomentario" name="form" method="post" action="postacomentario.php" onSubmit='return false;' > <textarea name=texto rows="10" id="texto" cols="50"></textarea> <input type="button" name="Submit" value="Cadastrar" onClick="ajaxForm('postarcomentario','formcomentario')"> </form></div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Finalmente conseguiEita.Agora a outra dúvida.Como pegar os dados? Pq eu envio para outra página PHP e gostaria de agora pegar os daos que enviei para adicionar no BD.EDITATOOOAE GENTE EDIT DE ULTIMA HORA. DEU CERTO ISAAAAA.

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.