Aqui, eu quero fazer tipo aquele combo de estados e cidades em ajax. Lembra?
Pois é. Tudo funciona direitinho, incluzive o xml retorna os valores legal.
Porem, no buscafornecedor.js, arquivo que tem o ajax, quando chega na linha 54.
var dataArray = obj.getElementsByTagName("fornecedor_dados");
A variavel dataArray retorna zero de valor.
Onde será que esta o erro?
Veja o código todo:
function DadosFornecedor(valor,form_get) {
//verifica se o browser tem suporte a ajax
try {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
ajax = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do ajax");
ajax = null;
}
}
}
//se tiver suporte ajax
if(ajax) {
//deixa apenas o elemento 1 no option, os outros são excluídos
document[form_get].fornecedor_dados.options.length = 1;
idOpcao = document.getElementById("opcoesfornecedor");
ajax.open("POST", "../global/funcoes_php/buscafornecedor.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function() {
//enquanto estiver processando...emite a msg de carregando
if(ajax.readyState == 1) {
idOpcao.innerHTML = "Carregando...!";
}
//após ser processado - chama função processXMLfornecedores que vai varrer os dados
if(ajax.readyState == 4 ) {
if(ajax.responseXML) {
processXMLfornecedores(ajax.responseXML,form_get);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcao.innerHTML = "Primeiro selecione o fornecedor>>";
}
}
}
//passa o código do fornecedor escolhido
var params = "id_fornece="+valor;
ajax.send(params);
}
}
function processXMLfornecedores(obj,form_get){
//pega a tag fornecedor
var dataArray = obj.getElementsByTagName("fornecedor_dados");
//total de elementos contidos na tag fornecedor
if(dataArray.length > 0) {
//percorre o arquivo XML paara extrair os dados
for(var i = 0; i < dataArray.length; i++) {
var item = dataArray[i];
//contéudo dos campos no arquivo XML
var id = item.getElementsByTagName("id")[0].firstChild.nodeValue;
var nome = item.getElementsByTagName("nome")[0].firstChild.nodeValue;
var razaosocial = item.getElementsByTagName("razaosocial")[0].firstChild.nodeValue;
idOpcao.innerHTML = "Selecione uma das opções abaixo>>";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoesfornecedor");
//atribui um valor
novo.value = id;
//atribui um texto
novo.text = nome.razaosocial;
//finalmente adiciona o novo elemento
document[form_get].fornecedor_dados.options.add(novo);
}
}
else {
//caso o XML volte vazio, printa a mensagem abaixo
idOpcao.innerHTML = "Primeiro selecione o fornecedor>>";
}
}
Pergunta
Carlos Rocha
Olá pessoal.
Tenho o form abaixo:
Aqui, eu quero fazer tipo aquele combo de estados e cidades em ajax. Lembra? Pois é. Tudo funciona direitinho, incluzive o xml retorna os valores legal. Porem, no buscafornecedor.js, arquivo que tem o ajax, quando chega na linha 54. A variavel dataArray retorna zero de valor. Onde será que esta o erro? Veja o código todo: Eis tambem o php/xml Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.