Ir para conteúdo

POWERED BY:

Arquivado

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

Korben Dallas

Buscando dados do XML com AJAX

Recommended Posts

Olá Pessoal!

 

Estou com um problemão e gostaria de ajuda. Se alguem já passou por isso, dá uma luz por favor! =X

 

É o seguinte: sisteminha de cadastro de alunos. Em uma página (alunos.php), tenho um formulário em branco para inserir novo aluno, e, ao final da página, tem uma relação dos alunos já cadastrados. Quando se clica em um aluno cadastrado, acontece o seguinte procedimento:

 

- Ao clicar, é chamado uma função ajax que carrega a página alunos_dados.php, passando apenas o id do aluno.

 

- Como o ajax não permite que essa página (alunos_dados.php) retorne nehuma função e nem javascript (só posso retornar texto pelo xmlhttp.responseText), essa página cria um arquivo alunos.xml.

 

- Assim que termina de criar o arquivo, é chamada na página alunos.php uma função que lê esse xml. à medida que a função vai lendo, ela vai preenchendo os campos do formulário com os valores gravados no xml.

 

Até aí tudo bem, funciona perfeitamente - SE eu fizer um cadastro completo. Se eu deixar um campo vazio, retorna um erro.

A função que preenche o formulário é a formfill(), que fica na página alunos.php:

 

function formfill() {

//Aqui ele já deu um xmlDoc.load na página anterior, então apenas define vars como as variáveis do xml.

var vars = xmlDoc.documentElement;

f = document.form1;

 

//Aqui eu defino os campos do formulário para fazer o loop preenchendo com as informações do XML

var campos = Array('id', 'matricula', 'nome', 'identidade', 'identidade_orgao', 'cpf', 'nascimento', 'turma', 'endereco', 'bairro', 'cidade', 'cep', 'estado', 'telefone', 'fax', 'celular', 'lancamento', 'res_id', 'res_pai', 'res_mae', 'res_responsavel', 'res_identidade', 'res_identidade_orgao', 'res_cpf', 'res_telefone', 'res_fax', 'res_email');

 

//Aqui é o for, que passa por todos os campos do formulario segundo a lengh de "campos" carregando ele com os dados do XML

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

//Aqui ele DEVERIA verificar se a variável XML está em branco ou não. Se não fosse vazia, preencheria o campo com o valor. Se fosse vazia, colocaria o valor do campo como '' (Vazio).

if(vars.getElementsByTagName(campos)[0].childNodes[0].nodeValue != '')

f.getElementsByTagName('input')[campos].value = vars.getElementsByTagName(campos)[0].childNodes[0].nodeValue;

else

f.getElementsByTagName('input')[campos].value = '';

}

 

//Como eu disse, inicialmente o furmulário está cnofigurado pra inserir dados, então ele apenas alterar para editar os dados.

document.getElementById('titulo').innerHTML = 'Editar Aluno';

f.bsubmit.value = 'Editar';

f.action = '?x=alunos&op=editar';

}

 

Aparentemente a função deveria funcionar perfeitamente (pelo meu ponto de vista). Como eu disse lá em cima, a função funciona SIM, se todos os dados estivrem preenchidos, ou seja: se todas as variáveis XML tiverem um valor definido.

Acontece que quando uma das variáveis XML não tem valor nenhum, segundo o debugger do FF dá esse erro:

Erro: vars.getElementsByTagName(campos)[0].childNodes[0] has no properties

eu já tentei várias coisas, setar isso aí em cima (o erro) como variável, dar um alert, mas nada funciona.

Pelo que eu entendi, quando a variavel XML não tem valor, vars.getElementsByTagName(campos)[0].childNodes[0].nodeValue se torna um "nada", ele não responde valores como "null" ou '' (vazio), ele não responde nada! pelo que vejo, é como se naquele if ali eu colocasse assim: if( != '') (se(nada != ''))

 

Alguem tem uma idéia de como eu posso resolver isso? Eu já quebrei a cabeça muito tempo, procurei em vários lugares e não achei nada =[

 

Quem puder ajudar, eu agradeço MUITO! :)

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora to vendo que ficou "meio" confuso o código, copiem e colem ele no dreamweaver que vai ficar mais tranquilo de entender =]

novamente, obrigado aí quem puder ajudar! o/

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.