Ir para conteúdo

Arquivado

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

nicolasdezena

Array

Recommended Posts

Galera,

 

tenho os seguintes pedaços de códigos:

<script type="text/javascript">
	function adicionaProduto(cdProduto, qtProdutoCampo) {
		var qtProduto = document.getElementById(qtProdutoCampo).value;
		var prodCestaForm = document.getElementById('produtoCestaForm');
		if(qtProduto != null && qtProduto>0){
			prodCestaForm.cdProduto.value = cdProduto;
			prodCestaForm.qtProduto.value = qtProduto;
			setCookie("SLIRedirect",encodeURIComponent(window.location.hash),document.domain);

			
			prodCestaForm.submit();
		}
		return false;
	}
</script>
<form name="produtoCestaForm" id="produtoCestaForm"  onsubmit="return stopRedirect(this)" method="post" action="/adicionaItemCesta.do">
	<input type="hidden" name="cdProduto" value="">
	<input type="hidden" name="qtProduto" value="">	  
	
</form>
<div class="pdto_comprar">
			<div class="quantidade"><label>Quantidade</label> <input type="text" maxlength="2" id="qtdProduto1" value="1" onkeypress="return soNumero(event);"> <a href="javascript:adicionaProduto(35831,'qtdProduto1' )">Comprar</a></div>
		</div>

Seguinte não tenho acesso ao "action" do form, os dados recebidos pelo form através do js só são adicionados a cesta após o submit, tentei fazer por ajax mas não consegui, pensei em fazer um array porém não obtive sucesso.

 

Deixando mais claro minha dúvida: preciso que quando o cara clique no comprar adicione mais de um produto. Cai de paraquedas aqui no trampo com esse problema ai....

 

Se alguém tiver alguma ideia fico agradecido.

 

Obrigado,

Nicolas Dezena

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Nicolas, tudo bem?

 

Você pode criar um input hidden assim:

<input type="hidden" name="produtos[]" value="id_produto_1"/>
<input type="hidden" name="produtos[]" value="id_produto_2"/>
<input type="hidden" name="produtos[]" value="id_produto_3"/>

Toda vez que você adicionar o produto ao carrinho o javascript cria um novo input igual a estes. e quando você for fazer o submit você tera um array de produtos com os IDS de cada um, no qual você pode manipular da maneira que achar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Oi cara tudo sim e você? Primeiramente obrigado pela ajuda, porem acontece e que basicamente tenho que incluir um array dentro do js que esta la em cima pois é aquela estrutura que o backend utiliza...

 

Onde cdProduto e o codigo do produto e qtdProduto e a div onde o msm esta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Nicolas, mas pelo que eu intendi do seu código o que está na div pdto_comprar é os dados que através do javascript você adiciona ao form, e o código que estou lhe mostrando é justamente isso, veja como eu faria:

 

HTML:

<form name="produtoCestaForm" id="produtoCestaForm"  onsubmit="return stopRedirect(this)" method="post" action="/adicionaItemCesta.do">
         //deixo o formulario vazio, pois vou adiciona o input dinamicamente pelo javascript.
</form>

JS:

<script type="text/javascript">
	function adicionaProduto(cdProduto, qtProdutoCampo) {
		var qtProduto = document.getElementById(qtProdutoCampo).value;
		var prodCestaForm = document.getElementById('produtoCestaForm');
		if(qtProduto != null && qtProduto>0){
                      var element = document.createElement("input"); //crio um novo input
                       element.setAttribute("name", "produtos["+cdProduto+"][quantidade]"); //seto o name no input
                       element.setAttribute("type", "hidden"); //coloca o input como hidden
                       
                       //adiciono a quantidade no value pois o id ja vai ficar na chave do array
                       element.value = qtProduto; 
                       
                       prodCestaForm.appendChild(element); //adiciono o input no formulario
                       setCookie("SLIRedirect",encodeURIComponent(window.location.hash),document.domain); 
                       prodCestaForm.submit();            
                 } 
                     return false; 
           } 
</script>

Não sei se ficou claro, mas creio que fazendo isso ja irá cumprir o seu objetivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Entendi seu código, porém tenho que adicionar 3 produtos diferentes quando clico no botão comprar. Vou tentar fazer umas modificações no seu :D. Ja ja posto o resultado.

Cara, usando seu código ele não adiciona no carrinho, ele muda a barra de endereço para a requisição do java invés de adicionar no carrinho =( ta osso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você adicionou esta div no seu código:

<div class="pdto_comprar">
            <div class="quantidade"><label>Quantidade</label> <input type="text" maxlength="2" id="qtdProduto1" value="1" onkeypress="return soNumero(event);"> <a href="javascript:adicionaProduto(35831,'qtdProduto1' )">Comprar</a></div>
        </div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Você adicionou esta div no seu código:

<div class="pdto_comprar">
            <div class="quantidade"><label>Quantidade</label> <input type="text" maxlength="2" id="qtdProduto1" value="1" onkeypress="return soNumero(event);"> <a href="javascript:adicionaProduto(35831,'qtdProduto1' )">Comprar</a></div>
        </div>

Sim Sim

Compartilhar este post


Link para o post
Compartilhar em outros sites

remove esta linha:

 

prodCestaForm.submit();

 

na função adicionaProduto()

 

e veja se está construindo o formulario com os inputs montados, e se puder me manda uma print de como fica o form quando você adiciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

remove esta linha:

 

prodCestaForm.submit();

 

na função adicionaProduto()

 

e veja se está construindo o formulario com os inputs montados, e se puder me manda uma print de como fica o form quando você adiciona.

Fiz... Não acontece nada rs... Eu fiz um código aqui claro que não funciona mas so para vc entender:

<script type="text/javascript">    	function adicionaProduto1(cdProduto, qtProdutoCampo) {		var qtProduto = document.getElementById(qtProdutoCampo).value;		var prodCestaForm = document.getElementById('produtoCestaForm1');		if(qtProduto != null && qtProduto>0){			prodCestaForm.cdProduto.value = cdProduto;			prodCestaForm.qtProduto.value = qtProduto;			setCookie("SLIRedirect",encodeURIComponent(window.location.hash),document.domain);								}		return false;	}    function adicionaProduto2(cdProduto, qtProdutoCampo) {		var qtProduto = document.getElementById(qtProdutoCampo).value;		var prodCestaForm = document.getElementById('produtoCestaForm1');		if(qtProduto != null && qtProduto>0){			prodCestaForm.cdProduto.value = cdProduto;			prodCestaForm.qtProduto.value = qtProduto;			setCookie("SLIRedirect",encodeURIComponent(window.location.hash),document.domain);								}		return false;	}    function adicionaProduto3(cdProduto, qtProdutoCampo) {		var qtProduto = document.getElementById(qtProdutoCampo).value;		var prodCestaForm = document.getElementById('produtoCestaForm1');		if(qtProduto != null && qtProduto>0){			prodCestaForm.cdProduto.value = cdProduto;			prodCestaForm.qtProduto.value = qtProduto;			setCookie("SLIRedirect",encodeURIComponent(window.location.hash),document.domain);			prodCestaForm.submit();					}		return false;	}    </script><script>  function adicionaProdutos() {    javascript:adicionaProduto1(12101,'qtdProduto1' )    javascript:adicionaProduto2(35831,'qtdProduto2' )  	javascript:adicionaProduto3(29795,'qtdProduto3' )  }</script><form name="produtoCestaForm" id="produtoCestaForm"  onsubmit="return stopRedirect(this)" method="post" action="/RaiaEcommWeb/adicionaItemCesta.do">	<input type="hidden" name="cdProduto" value="">	<input type="hidden" name="qtProduto" value="">	  	</form><div class="pdto_comprar">			<div class="quantidade"><label>Quantidade</label> <input type="text" maxlength="2" id="qtdProduto1" value="1" onkeypress="return soNumero(event);"> <a href="javascript:adicionaProdutos()">Comprar</a></div>		</div>

Acontece que os produtos só são enviados para o java quando tem o refresh

 

 

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Nicolas, eu intendi o seu objetivo, mas onde está a parte que eu te passei? pois com o que eu te passei você não precisa ter 3 funções, com uma só você adiciona o produto. esta parte que te passei para retirar as linhas é so para saber se ele envia sozinho quando adiciona. vms debugar para identificar o erro. pelo que eu intendi só deve enviar a pagina adicionaItemCesta.do só quando os produtos tiverem adicionados ao form correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Nicolas, eu intendi o seu objetivo, mas onde está a parte que eu te passei? pois com o que eu te passei você não precisa ter 3 funções, com uma só você adiciona o produto. esta parte que te passei para retirar as linhas é so para saber se ele envia sozinho quando adiciona. vms debugar para identificar o erro. pelo que eu intendi só deve enviar a pagina adicionaItemCesta.do só quando os produtos tiverem adicionados ao form correto?

 

O código que me enviou quando clico no comprar o mesmo redirecionar para uma página em branco no caso ele não executa o java, e assim que tiro o submit ele simplesmente não acontece nada...

 

Ai comecei a "inventar" sem o seu código entendeu rs?

 

 

O problema é que o java só adiciona ao carrinho quando a página da um "refresh" dentro do JS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Nicolas, eu intendi o seu objetivo, mas onde está a parte que eu te passei? pois com o que eu te passei você não precisa ter 3 funções, com uma só você adiciona o produto. esta parte que te passei para retirar as linhas é so para saber se ele envia sozinho quando adiciona. vms debugar para identificar o erro. pelo que eu intendi só deve enviar a pagina adicionaItemCesta.do só quando os produtos tiverem adicionados ao form correto?

O form está ficando assim quando copiei falto um " ; " rs:

<form name="produtoCestaForm1" id="produtoCestaForm1" onsubmit="return stopRedirect(this)" method="post" action="/RaiaEcommWeb/adicionaItemCesta.do">
        
<input name="produtos[35831][quantidade]" type="hidden" value="1"></form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Haaa é isso mesmo que tem que ficar, pois ai la na sua pagina do servidor ele vai receber um array de produtos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Haaa é isso mesmo que tem que ficar, pois ai la na sua pagina do servidor ele vai receber um array de produtos.

Acredito que o código não consiga receber um array, teria que isar ajax porém o ajax não funcionou tbm =\

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Nicolas, ele recebe sim, se você estiver recebendo um POST do formulario, você consegue pegar esse array.

 

Me diga como você captura o post na sua pagina do servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Nicolas, ele recebe sim, se você estiver recebendo um POST do formulario, você consegue pegar esse array.

 

Me diga como você captura o post na sua pagina do servidor?

Então ai que está.... Eu não tenho esse acesso kkkk entendeu meu problema?

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.