Ir para conteúdo

POWERED BY:

Arquivado

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

vini_bc_br

[Resolvido] Ajax não retorna XML no servidor de hospedagem

Recommended Posts

Boa tarde!

 

Primeiramente como sou novato aqui, quero pedir desculpas caso tenha postado em local errado, mas vamos la... Estou desenvolvendo um sistema de cadastro de veículos, onde na primeira etapa são cadastrados dados como categoria, marca, modelo, etc. Os quais são realizados através de comboBox e usando ajax para preenche-los conforme seleção do combo anterior. O meu problema é que estou usando o retorno de XML para preencher o combo e na minha máquina usando o Xampp funciona ja no servidor de hospedagem não, verificando o firebug notei que o xml é gerado, tanto é que quando abro as requisições ele mostra como html retornado, mas não preenche o combo, segue trechos do código. Será que tenho que instalar algum complemento no servidor? Notei que no firefox não entra no reqi.responsexml na função processarRequisicaoComboBox() ja no IE entra, mas o combo fica em branco. Ficarei grato se alguem puder me ajudar...

 

Formulário:

<form name="cad_car" target="principal" method="post" action="carros.php?op=salvar&id_user=<?=$id;?>&up=<?=$up;?>&id_produto=<?=$id_p;?>&qtdf=<?=$qtd_fotos;?>" enctype="multipart/form-data">
			<div id="dados_principais">
				<table width="399" align="center"> 
				<? if($tipo_usuario<=2) {?>
					<tr><td id='la'>Selecione a loja:</td>    
						<td><select id='loja' name="loja"  >
								<option  value="0">Selecione </option>
								<? for($i=0; $i<$qtd_user; $i++) {	
										echo "<option name ='loja".mysql_result($usuarios,$i,"id_usuario")."' value=".mysql_result($usuarios,$i,"id_usuario").">".
										mysql_result($usuarios,$i,"nome_usuario")."</option>";
									}
								?>
						</select></td></tr>
				<?

				 }?>					
					<tr><td id='la'>Selecione a Categoria:</td>    
						<td><select id="categoria" name="categoria" onchange="ajax(0,2);">
						<option value="0">Selecione </option>
						<? for($i=0; $i<$qtd_cat; $i++) {	
							echo "<option name ='cat".mysql_result($categorias,$i,"id_categoria")."' value=".mysql_result($categorias,$i,"id_categoria").">".
							mysql_result($categorias,$i,"nome_categoria")."</option>";
						}
						?>
						</select></td></tr>
					<tr><td id='la'>Selecione a Marca:</td>    
						<td><select id="marcas" name="marca" onchange="ajax(0,3);" >
						<option  value="0" selected="selected">Selecione </option>

						</select></td></tr>

 

Arquivo .js:

 

//====================================================================================================================================	
function requisicao() {
if (window.XMLHttpRequest) {  // Firefox, Safari, Opera, etc
	var req = new XMLHttpRequest();
} else if (window.ActiveXObject){ // Internet Explorer
	try {
		var req = new ActiveXObject("Msxml2.XMLHTTP");//Versões mais novas
	} catch (e) {
		try {
			var req = new ActiveXObject("Microsoft.XMLHTTP");//Versão mais antiga
		} catch (e) {
		}
	}
}
if (!req) {
alert("Problemas com a requisição!");
return false;
}	
else {
	return req;	
}
}
//====================================================================================================================================
function ajax(url,op){
   var opt = -12;	
   reqi = requisicao();
	if(op==2) {//combobox preenche marcas conforme categoria
		id_objeto = "marcas";
		tag1 = "nome_marca";
		tag2 = "id_marca";
		//("marcas","nome_marca","id_marca");//Quando  o atributo readyState for alterado invocar a funcao
       	        reqi.open('POST','ajax/processador.php',true);	//Abre a conexão tipo, url e boolean indicando se é assíncrona
		reqi.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
		reqi.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		reqi.setRequestHeader("Pragma", "no-cache");
		reqi.onreadystatechange = processarRequisicaoComboBox;
		var id_categoria = document.getElementById("categoria").options[document.getElementById("categoria").selectedIndex].value;
       	        reqi.send('op=1&categoria='+id_categoria);//Informação a ser enviada junto, utilizado no POST

	}
}
//====================================================================================================================================================
function processarRequisicaoComboBox()
{	
var combo = document.getElementById(id_objeto);		
combo.innerHTML = "";
combo.options[0] = new Option ("Carregando...", "Carregando...");
if(reqi.readyState == 4)//Completo
{
	if(reqi.status == 200)//OK
	{
		if(reqi.responseXML)
		{	
			alert("oi");
			combo.innerHTML = "";
			var t1 = reqi.responseXML.getElementsByTagName(tag1);
			var t2 = reqi.responseXML.getElementsByTagName(tag2);
			for(var i = 0; i < t1.length; i++)
			{
				var nome = t1[i].firstChild.nodeValue;
				var id = t2[i].firstChild.nodeValue;
				combo.options[i] = new Option (nome,id);
				if(id == opt) {
					combo.options[i].selected = true;	
				}
			}
		}
	}
}
}
//===================================================================================================================================================

 

Processador.php :

 

<?
include ("../../../bd/_bd.php.inc");
$conn    =   @mysql_connect($servidor, $usuario, $senha) 
            or die("ERRO NA CONEXÃO");
$db      =   @mysql_select_db($bd, $conn)
            or die("ERRO NA SELEÇÃO DO BANCO DE DADOS");

// Procura pelo parâmetro que indica o tipo de operação

$op = $_POST["op"] == NULL ? $_GET['op'] : $_POST['op'];
$id_cat = $_POST['categoria'] == null ? $_GET['categoria'] : $_POST['categoria'];
if(isset($op)) {
if($op==1) {// busca as marcas referente a categoria selecionada no comobox
	$comando  = "select a.*, b.id_marca from marca a, cat_marca b where b.id_categoria = $id_cat and a.id_marca = b.id_marca order by a.nome_marca ASC";
	//$comando  = "select * from marca  where id_marca = 2 order by nome_marca ASC";
	$tag1 = "id_marca"; $tag2 = "nome_marca" ;
}
if($op==2) {// busca as marcas referente a categoria selecionada no comobox
	$id_marca = $_POST['marca'] == null ? $_GET['marca'] : $_POST['marca'];
	$comando  = "select * from modelo where id_marca = $id_marca order by nome_modelo ASC";
	//$comando  = "select * from marca  where id_marca = 2 order by nome_marca ASC";
	$tag1 = "id_modelo"; $tag2 = "nome_modelo" ;
}

}
$res = mysql_query($comando);
$row = mysql_num_rows($res);
// define o tipo de conteúdo que será retornado pelo servidor (resposta)
header('Content-type: application/xml; charset=iso-8859-1');
echo '<xml version="1.0" encoding="ISO-8859-1" >'."\r\n";
// Adiciona a resposta o cabeçalho xml, aqui é iniciada a montagem do arquivo xml
//echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"
// Elemento raiz
echo '<resultado>';
$resultado = $resultado.'<'.$tag1.'>-1</'.$tag1.'>';
$resultado = $resultado.'<'.$tag2.'>Selecione</'.$tag2.'>';
for($i=0; $i < $row; $i++ ) {
	$resultado = $resultado.'<'.$tag1.'>'.mysql_result($res,$i,$tag1).'</'.$tag1.'>';
	$resultado = $resultado.'<'.$tag2.'>'.mysql_result($res,$i,$tag2).'</'.$tag2.'>';
}
//Adiciona o resultado a resposta
echo $resultado;
// fecha o elemento raiz
echo '</resultado> </xml>';
//final da resposta do servidor
?>

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.