Bom noite pessoal... to apanhando aqui ao fazer uma requisição ao meu banco... trata-se de um combo dinamico onde o usuario escolhe a linha do produto, nisso, é disparado o evento que envia a ID da linha a outra página, onde é trabalho para retornar o valor do segundo combo, o de produtos. O problema é que ele retorna vazio, e existem zilhoes de informações no banco. alguém pode me ajudar?
arquivo "listagem .asp" 'trabalha a informação e retorna para a primeira pagina
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="conexao.asp"-->
<%
'RECEBE PARÃMETRO
linha = request.Form("linha")
'QUERY
set linha=con.execute("SELECT * FROM Linha WHERE ID = "&linha)
Linha = linha("Linha")
set print=con.execute("SELECT * FROM Cadastro WHERE Linha = '"&Linha&"' ORDER BY Produtos ASC")
ID = print("ID")
Produto = print("Produto")
'XML
xml = "<%xml version=\'1.0\' encoding=\'ISO-8859-1\'%>\n";
xml .= "<produto>\n";
'PERCORRE ARRAY
while not print.eof
{
codigo = ID
descricao = Produto
xml .= "<produtos>\n";
xml .= "<codigo>".codigo."</codigo>\n";
xml .= "<descricao>".descricao."</descricao>\n";
xml .= "</produtos>\n";
}
print.movenext
wend
xml.= "</produto>\n";
'CABEÇALHO
Header("Content-type: application/xml; charset=iso-8859-1");
'PRINTA O RESULTADO
response.Write(xml)
%>
Página "produto.asp" 'busca onde o combo deve ser preenchido, mas retorna vazio....
<script language="JavaScript">
function Dados(valor) {
//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.frmAjax.listProdutos.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "listagem.asp", 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 processXML que vai varrer os dados
if(ajax.readyState == 4 ) {
if(ajax.responseXML) {
processXML(ajax.responseXML);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcao.innerHTML = " Primeiro selecione a linha ";
}
}
}
//passa o código do estado escolhido
var params = "linha="+valor;
ajax.send(params);
}
}
function processXML(obj){
//pega a tag cidade
var dataArray = obj.getElementsByTagName("produto");
//total de elementos contidos na tag cidade
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 codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[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", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao;
//finalmente adiciona o novo elemento
document.frmAjax.listProdutos.options.add(novo);
}
}
else {
//caso o XML volte vazio, printa a mensagem abaixo
idOpcao.innerHTML = " Voltou vazio ";
}
}
</script>
<form action="busca.asp" method="post" name="frmAjax">
<table width="93%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="25%" height="38"> </td>
<td width="75%"> </td>
</tr>
<tr>
<td height="22"> </td>
<td><div align="right">
<%
set print=con.execute("SELECT * FROM Linha ORDER BY ID ASC")
Linha = print("Linha")
ID = print("ID")
%>
<select name="listLinhas" id="listLinhas" style="width:200" onChange="Dados(this.value);">
<option value="0">Selecine a Linha</option>
<%
lin = ""
while not print.eof
%>
<option value="<% =print("ID")%>"><% =print("Linha")%></option>
<%
print.MoveNext
wend
%>
</select>
</div></td>
</tr>
<tr>
<td height="30"> </td>
<td><div align="right">
<select name="listProdutos" id="listProdutos" style="width:200">
<option id="opcoes" value="0"></option>
</select>
</div></td>
</tr>
<tr>
<td height="27" colspan="2"><div align="right">
<input type="submit" name="Submit" value="Localizar" style="background-color:#999999; color:#FFFFFF; font-family:Verdana; font-size:12px; border:thin; border-color:#999999; width:80">
</div></td>
</tr>
</table>
</form>
Pergunta
Renato Cast
Bom noite pessoal... to apanhando aqui ao fazer uma requisição ao meu banco... trata-se de um combo dinamico onde o usuario escolhe a linha do produto, nisso, é disparado o evento que envia a ID da linha a outra página, onde é trabalho para retornar o valor do segundo combo, o de produtos. O problema é que ele retorna vazio, e existem zilhoes de informações no banco. alguém pode me ajudar?
arquivo "listagem .asp" 'trabalha a informação e retorna para a primeira pagina
<%@LANGUAGE="VBSCRIPT"%> <!--#include file="conexao.asp"--> <% 'RECEBE PARÃMETRO linha = request.Form("linha") 'QUERY set linha=con.execute("SELECT * FROM Linha WHERE ID = "&linha) Linha = linha("Linha") set print=con.execute("SELECT * FROM Cadastro WHERE Linha = '"&Linha&"' ORDER BY Produtos ASC") ID = print("ID") Produto = print("Produto") 'XML xml = "<%xml version=\'1.0\' encoding=\'ISO-8859-1\'%>\n"; xml .= "<produto>\n"; 'PERCORRE ARRAY while not print.eof { codigo = ID descricao = Produto xml .= "<produtos>\n"; xml .= "<codigo>".codigo."</codigo>\n"; xml .= "<descricao>".descricao."</descricao>\n"; xml .= "</produtos>\n"; } print.movenext wend xml.= "</produto>\n"; 'CABEÇALHO Header("Content-type: application/xml; charset=iso-8859-1"); 'PRINTA O RESULTADO response.Write(xml) %>Página "produto.asp" 'busca onde o combo deve ser preenchido, mas retorna vazio....<script language="JavaScript"> function Dados(valor) { //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.frmAjax.listProdutos.options.length = 1; idOpcao = document.getElementById("opcoes"); ajax.open("POST", "listagem.asp", 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 processXML que vai varrer os dados if(ajax.readyState == 4 ) { if(ajax.responseXML) { processXML(ajax.responseXML); } else { //caso não seja um arquivo XML emite a mensagem abaixo idOpcao.innerHTML = " Primeiro selecione a linha "; } } } //passa o código do estado escolhido var params = "linha="+valor; ajax.send(params); } } function processXML(obj){ //pega a tag cidade var dataArray = obj.getElementsByTagName("produto"); //total de elementos contidos na tag cidade 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 codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue; var descricao = item.getElementsByTagName("descricao")[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", "opcoes"); //atribui um valor novo.value = codigo; //atribui um texto novo.text = descricao; //finalmente adiciona o novo elemento document.frmAjax.listProdutos.options.add(novo); } } else { //caso o XML volte vazio, printa a mensagem abaixo idOpcao.innerHTML = " Voltou vazio "; } } </script> <form action="busca.asp" method="post" name="frmAjax"> <table width="93%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="25%" height="38"> </td> <td width="75%"> </td> </tr> <tr> <td height="22"> </td> <td><div align="right"> <% set print=con.execute("SELECT * FROM Linha ORDER BY ID ASC") Linha = print("Linha") ID = print("ID") %> <select name="listLinhas" id="listLinhas" style="width:200" onChange="Dados(this.value);"> <option value="0">Selecine a Linha</option> <% lin = "" while not print.eof %> <option value="<% =print("ID")%>"><% =print("Linha")%></option> <% print.MoveNext wend %> </select> </div></td> </tr> <tr> <td height="30"> </td> <td><div align="right"> <select name="listProdutos" id="listProdutos" style="width:200"> <option id="opcoes" value="0"></option> </select> </div></td> </tr> <tr> <td height="27" colspan="2"><div align="right"> <input type="submit" name="Submit" value="Localizar" style="background-color:#999999; color:#FFFFFF; font-family:Verdana; font-size:12px; border:thin; border-color:#999999; width:80"> </div></td> </tr> </table> </form>Bom pessoal, é isso ai... espero ajuda.. vlw
Link para o comentário
Compartilhar em outros sites
4 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.