Jump to content


Photo

Eu Denovo..


  • Faça o login para participar
13 replies to this topic

#1 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 19/01/2007, 17:21

Boa tarde,

Antes de tudo, meu arquivo:

<html>
<head>
<script language="JavaScript">

function instancia(){
var ajax;
try{ ajax = new XMLHttpRequest();}
catch(ee)
{
try{ ajax = new ActiveXObject("Msxm12.XMLHTTP");}
catch(e)
{
try{ ajax = new ActiveXObject("Microsoft.XMLHTTP");}
catch(E)
{
ajax = false;
}}}
return ajax;
}

var ajax = new instancia();

function atualizaDados(){
var periodicidade = document.getElementsByName('periodicidade').value;
var vencimento = document.getElementById('vencimento')
vencimento = vencimento.options[vencimento.selectedIndex].value;
var url = 'valores.php?periodicidade='+periodicidade+'&vencimento='+vencimento;
ajax.onreadystatechange = atualizaValor;
ajax.open("GET", url, true);
ajax.send(null);
}

function atualizaValor(){
if (ajax.readyState == 4){
document.getElementById('valor').innerHTML = ajax.responseText;}
}
</script>
</head>
<body>
<form>

<input name="periodicidade" type="radio" value="1" onClick="atualizaDados();"/>
<input name="periodicidade" type="radio" value="2" onClick="atualizaDados();"/>
<input name="periodicidade" type="radio" value="3" onClick="atualizaDados();"/>

<br />

<select id="vencimento" name="select" onChange="atualizaDados();">
<option value="05">05</option>
<option value="10">10</option>
<option value="25">25</option>
</select>

</p>

<p><span id="valor">0,00</span></p>

</form>
</body>
</html>

Tava dando uns erros, então mandei imprimir a variável que monta a url a ser acessada, e me deparei com o seguinte resultado: "valores.php?periodicidade=undefined&vencimento=05"... ou seja, é para dar erro mesmo pois a váriavel "periodicidade" não esta recebendo o valor dos campos radio.

Outra coisa que percebi também é que não estã atualizando o valor do "Span ID" quando altera de radio, ou seleciona outro valor no combolist...

Comecei realmente a tentar me aprofundar a esses dias em Javascript e Ajax, se alguem poder me ajudar ficaria grato. :)

Ps: Neste arquivo, me baseei pela a resposta do amigo Marcio, que me ajudou em outro post meu...
http://forum.wmonlin...howtopic=169301

Edição feita por: newDev, 19/01/2007, 17:24.


#2 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 19/01/2007, 19:09

Olá.

Primeira coisa: document.getElementsByName(), retorna uma lista de objetos e não um objeto em si.
Por isso :
var periodicidade = document.getElementsByName('periodicidade').value;
dá undefined.

Uma solução: pegar a lista retornada pelo document.getElementsByName(), iterar sobre seus elementos, e ver qual está checado.
function check(){
  var lista = document.getElementsByName('browser');
  for (i=0; i<lista.length; i++)
	if (lista[i].checked) break;
  periodicidade = lista[i].value;
}

Tem que tratar o caso em que nenhum radio está checado, mas aì é contigo.
WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#3 Marcio Toloi

Marcio Toloi

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 19/01/2007, 19:19

É mesmo hehehe... não tinha testado os radios.

Eu estava neste exato momento postando uma resposta. Mas o matt.cavotta foi mais rápido :D

Enfim, aquela implementação então ficaria:
var period = document.getElementsByName('periodicidade');

for (var i=0; i<period.length; i++) {
  if (period[i].checked == true) {
	period = period[i].value;
	break;
  }
}

Valeu! Abraço!

#4 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 24/01/2007, 14:43

Obrigado matt.cavotta e Marcio Toloi, funcionou... :)

Mas ainda persiste aquele segundo problema, já vasculhei o code e não achei onde está o erro... quando clica em um rádio pela primeira vez, ele exibe o valor direitinho, ao selecionar outro, o valor não se altera, o mesmo acontece no combo vencimento.

Desde já grato.
:D

#5 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 24/01/2007, 15:21

Posta seu código completo, depois que foram feitas modificações. No tópico o código ficou todo separado e foram feitas mudanças que eu nem sei mais o que você tá usando.

(y)
WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#6 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 24/01/2007, 17:18

O código continua praticamente o mesmo, o que mudou foi:

var periodicidade = document.getElementsByName('periodicidade').value;

Para:

var periodicidade = document.getElementsByName('periodicidade');
for (var i=0; i<periodicidade.length; i++){
if (periodicidade[i].checked == true){
periodicidade = periodicidade[i].value;
break;
}
}


:)

Edição feita por: newDev, 24/01/2007, 17:18.


#7 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 24/01/2007, 18:26

Hmm ... estranho ...

var periodicidade = document.getElementsByName('periodicidade');
for (var i=0; i<periodicidade.length; i++){
if (periodicidade[i].checked == true){
periodicidade = periodicidade[i].value;
break;
}
}


Você tá usando periodicidade como lista e como variável. Não sei se é isso, mas tente fazer como eu sugeri:

var lista = document.getElementsByName('periodicidade');
for (var i=0; i<lista.length; i++){
if (lista[i].checked == true){
periodicidade = lista[i].value;
break;
}
}

WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#8 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 25/01/2007, 09:45

Fiz a alteração, e o resultado foi o memso...

Fiz uma pequena modificação para vcs poderem ver o script 'funcionando'...

teste.php

<html>
<head>
<script language="JavaScript">

function instancia(){
var ajax;
try{ ajax = new XMLHttpRequest();}
catch(ee)
{
try{ ajax = new ActiveXObject("Msxm12.XMLHTTP");}
catch(e)
{
try{ ajax = new ActiveXObject("Microsoft.XMLHTTP");}
catch(E)
{
ajax = false;
}}}
return ajax;
}

var ajax = new instancia();

function atualizaDados(){
var periodicidade = document.getElementsByName('periodicidade');
for (var i=0; i<periodicidade.length; i++){
if (periodicidade[i].checked == true){
periodicidade = periodicidade[i].value;
break;
}
}
var vencimento = document.getElementById('vencimento')
vencimento = vencimento.options[vencimento.selectedIndex].value;
var url = 'num.php';
ajax.onreadystatechange = atualizaValor;
ajax.open("GET", url, true);
ajax.send(null);
}

function atualizaValor(){
if (ajax.readyState == 4){
document.getElementById('valor').innerHTML = ajax.responseText;}
}
</script>
</head>
<body>
<form>

<input name="periodicidade" type="radio" value="1" onClick="atualizaDados();"/>
<input name="periodicidade" type="radio" value="2" onClick="atualizaDados();"/>
<input name="periodicidade" type="radio" value="3" onClick="atualizaDados();"/>

<br />

<select id="vencimento" name="select" onChange="atualizaDados();">
<option value="05">05</option>
<option value="10">10</option>
<option value="25">25</option>
</select>

</p>

<p><span id="valor">000</span></p>

</form>
</body>
</html>

num.php

<?
function gerar_cod($valor){
$word = "1,2,3,4,5,6,7,8,9,0";
$separa = explode(",",$word);
shuffle($separa);
$resultado = implode($separa,"");
$codigo = substr($resultado, 0, $valor);
return ($codigo);
}
echo gerar_cod(3);
?>


Valeu :)

#9 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 01/02/2007, 11:00

Não há solução? :rolleyes:

#10 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 01/02/2007, 12:35

Acho que esse era o problema:

function atualizaValor() {

  if (ajax.readyState == 4) {
	if (ajax.status == 200) {
	  document.getElementById('valor').innerHTML = ajax.responseText;
  }
  }
}

Avisa aí se deu certo.
WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#11 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 03/02/2007, 17:10

Hmm, ainda não.. :)

Mas descobri algo útil... no FireFox o script funciona, estou utilizando IE7 e não funciona, no IE6 ainda não testei pq não tenho aqui.

Será que o problema ainda está no script, na instância ajax, ou no navegador? =X

Obrigado pela força matt.cavotta! :D

#12 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 03/02/2007, 19:23

Bom, este aqui foi testado no IE6.0 e FF2.0 veja:

link

Veja se funciona aí no IE7.0

Tem 3 arquivos:
num.php
request.js
teste.php

[]'s
WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#13 newDev

newDev

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Penápolis - SP

Posted 06/02/2007, 18:46

Funcionou (y)

Gostaria de saber o que vc alterou, para mim saber onde é que estava errando, e também para poder aprender né :)

Mais uma vez, obrigado matt.cavotta :D

#14 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 06/02/2007, 20:45

Bom, acho que o que eu fiz diferente foi aquilo que eu te sugeri mas não adiantou, e o modo como é feito o request
(tudo do arquivo request.js que não está dentro de função).

Pega o seu código e tentar dar uma comparada.

Os 3 arquivos podem ser obtidos aqui:
http://www.students....68/teste/forum/

[]'s
WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq