Foros del Web » Programando para Internet » Javascript » Frameworks JS »

problemas con codigo ajax

Estas en el tema de problemas con codigo ajax en el foro de Frameworks JS en Foros del Web. hola estoy hacieno un sistema donde la gente comenta una fotos que otros usuarios comentan tipo las redes sociales. y tiene un sistema en Ajax. ...
  #1 (permalink)  
Antiguo 03/08/2010, 13:44
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años, 6 meses
Puntos: 5
problemas con codigo ajax

hola estoy hacieno un sistema donde la gente comenta una fotos que otros usuarios comentan tipo las redes sociales.
y tiene un sistema en Ajax.
soy vastante nuevo en esto del ajax y no logro encontrar el error que tengo ya que en el mismo sistema tengo dos aplicaciones muy parecidas.
con una paso las fotos y con otra los comentarios.
cuando hise el primer sistema de las fotos todo bien funciono a la perfeccion, y cuando le agregue este otro sistema de los comentarios deja de funcionar

les paso el codigo completo a ver si alguien sabe donde esta el error

codigo ajax
Código:
function getXMLHTTPRequest (){
try {
req = new XMLHttpRequest();
}catch(err1){
       try {
	     req = new ActiveXObject("Msxml2.XMLHTTP");
	   }catch(err2){
	      try { req = new ActiveXObject("Microsoft.XMLHTTP");
	   }catch(err3){
	    req = false;
	  }
    } 
  }
  return req;
}

var miPeticion = getXMLHTTPRequest ();
var peticomentario = getXMLHTTPRequest ();

function prevxfoto()
{
var ids = document.miform.namefoto.value;
var miAleatorio=parseInt(Math.random()*99999999);
var url = "servidorfotoprev.php?id=" + ids;
miPeticion.open("GET", url+ "&rand=" + miAleatorio, true);
miPeticion.onreadystatechange = respuestaAjaxFoto;
miPeticion.send(null);
}
function nexfoto()
{
var ids = document.miform.namefoto.value;
var miAleatorio=parseInt(Math.random()*99999999);
var url = "servidorfoto.php?id=" + ids;
miPeticion.open("GET", url+ "&rand=" + miAleatorio, true);
miPeticion.onreadystatechange = respuestaAjaxFoto;
miPeticion.send(null);
}

function respuestaAjaxFoto() {
if(miPeticion.readyState == 4) {
if(miPeticion.status == 200) {
 var datolink = miPeticion.responseXML.getElementsByTagName("link")[0];
 var datonamefoto = miPeticion.responseXML.getElementsByTagName("fotoname")[0];
 var datoid = miPeticion.responseXML.getElementsByTagName("id")[0];
 var textolink = datolink.childNodes[0].nodeValue;
 var textoid = datoid.childNodes[0].nodeValue;
 var textonamefoto = datonamefoto.childNodes[0].nodeValue;
 document.getElementById('foto').innerHTML = ("<a href=\"javascript:;\" onclick=\"nexfoto();\"><img src=\"" + textolink + "\" width=\"600\"></img></a>");			
 document.getElementById('namefoto').innerHTML = ("<input type=\"hidden\" id=\"namefoto\" value=\"" + textoid + "\"></form>");
 document.getElementById('actual').innerHTML = (textonamefoto);
 document.getElementById('nombrefoto').innerHTML = (textonamefoto);
			


        } else {
		alert("Ha ocurrido un error: " + miPeticion.statusText);
        }
    } else {     // si readyState ha cambiado
                 // pero readyState <> 4
           document.getElementById('foto').innerHTML = '<img src="jpg/cargador.jpg">';
    }

}

function comentariofoto()
{
var idss = document.miform.namefoto.value;
var comentario = document.comentariofoto.comentario.value;
var usuario = document.comentariofoto.username.value;
var miAleatorio=parseInt(Math.random()*99999999);
var url = "servidorcomentario.php?id=" + idss +"&comentario=" + comentario +"&username=" + usuario;
peticomentario.open("GET", url+ "&rand=" + miAleatorio, true);
peticomentario.onreadystatechange = respuestaAjaxComentario;
peticomentario.send(null); 
}

function respuestaAjaxComentario() {
if(peticomentario.readyState == 4) {
if(peticomentario.status == 200) {

 var datouser = peticomentario.responseXML.getElementsByTagName("usuario");
 var datocomentario = peticomentario.responseXML.getElementsByTagName("comentario");
 var datofecha = peticomentario.responseXML.getElementsByTagName("fecha");
 var datohora = peticomentario.responseXML.getElementsByTagName("hora");
 
 $a = 1;
 for ($a==1; $a<=4; $a++)
 {
 var textouser = datouser.childNodes[$a].nodeValue;
 var textocomentario = datocomentario.childNodes[$a].nodeValue;
 var textofecha = datofecha.childNodes[$a].nodeValue;
 var textohora = datohora.childNodes[$a].nodeValue;
 
 var resultadofinal = resultadofinal + "<table width=\"75%\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#A7C4D2\">
         <!--DWLayoutTable-->
         <tr>
         <td width=\"4\" height=\"5\"></td>
         <td width=\"20\"></td> 
         <td width=\"20\"></td>
         <td width=\"20\"></td>
         <td width=\"20\"></td>
          </tr>
          <tr>
         <td width=\"20\" height=\"60\" >&nbsp;</td>
         <td valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#000000\">
         <!--DWLayoutTable-->
          <tr>
         <td width=\"40\" height=\"40\" valign=\"top\"><a href=\"muro.php?name="+textouser+"\"> <img src=\"fotos/usuarios/"+textouser+".jpg\" width=\"40px\" height=\"40px\" bordercolor=\"#FFFFFF\" border=\"0\" ></img> </a> </td>
         </tr>
          </table></td>
         <td>&nbsp;</td>
         <td valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
         <!--DWLayoutTable-->
         <tr>
         <td width=\"296\" height=\"65\"><table width=\"296\" cellspacing=\"2\">
         <tr>
         <td width=\"110\"><div align=\"left\"><span class=\"Estilo1\">&nbsp; "+textouser+"</span></div></td>
         <td width=\"174\" bgcolor=\"#FFFFFF\"><div align=\"left\"><span class=\"Estilo3\">&nbsp;<a href=\"perfil.php?name="+textouser+"\">Ver Perfil</a> <a href=\"documentos.php?name="+textouser+"\">Documentos</a></ span></div>
	     </span></td>
         </tr>
         <tr>
         <td height=\"40\" colspan=\"2\" bgcolor=\"#FFFFFF\"><div align=\"left\">&nbsp;<span class=\"Estilo4\">"+textocomentario+"<br></span><span class=\"Estilo8\">"+textofecha+" - "+textohora+"<br></span> </div></td>
         </tr>
         </table></td>
         </tr>
       </table>
        </td>
         <td>&nbsp;</td>
        </tr>
        <tr>
        <td height=\"4\"></td>
         <td></td>
         <td></td>
          <td></td>
         <td></td>
         </tr>
        </table>";
		
 
 }
 
 document.getElementById('comentarios').innerHTML = ("hola");
			


        } else {
		alert("Ha ocurrido un error: " + peticomentario.statusText);
        }
    } else {     // si readyState ha cambiado
                 // pero readyState <> 4
           document.getElementById('comentarios').innerHTML = 'laouen';
    }

}
codigo php
Código PHP:
include("fns.php");
include("loops.php");

header('Content-Type: text/xml');
echo "<?xml version="1.0\" ?>";
echo 
"<comentarios>";

        
$db_conn db_connect();

     
$username $_GET['username'];
     
$id $_GET['id'];
     
$comentario $_GET['comentario'];
     
$year date("Y");
     
$mes date("m");
     
$dia date("d");
     
$hora date("H");
     
$minuto date("i");
     
$segundo date("s");
     
     
$insertcomentario "insert into comentarios_fotos values ('".$id."', '".$username."', '".$comentario."', '".$year."', '".$mes."', '".$dia."', '".$hora."', '".$minuto."', '".$segundo."')";
     
$resultinsert mysql_query($insertcomentario$db_conn) or die (mysql_error());
     
     
$querycomentario "select * from comentarios_fotos where id = '$id'";
     
$resultcomentario mysql_query ($querycomentario$db_conn) or die (mysql_error());
     
$numcomentario mysql_num_rows($resultcomentario);
     
     if (
$numcomentario>0)
     {
          while (
$array mysql_fetch_array($resultcomentario))
          {
             
$user $array['usuario'];
             
$comentario $array['comentario'];
             
$fecha $array["dia"]."-".$array["mes"]."-".$array["year"];
             
$hora $array["hora"].":".$array["minuto"].":".$array["segundo"]." Hs:";
             
             echo 
"<usuario>$user</usuario>
                   <comentario>$comentario</comentario>
                   <fecha>$fecha</fecha>
                   <hora>$hora</hora>"
;  
          }
     }
     
     
        echo 
"</comentarios>";
no se porque deja de funcionar cuando al codigo ajax le agrego las funciones:
respuestaAjaxComentario() y comentariofoto()
que son las que se encargan del comentario.
el php me fije aparte y procesa bien los datos.

bueno si alguien sabe cual es mi error porque yo no
  #2 (permalink)  
Antiguo 03/08/2010, 15:17
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: problemas con codigo ajax

nadie me puede alludar ?
  #3 (permalink)  
Antiguo 04/08/2010, 12:40
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: problemas con codigo ajax

que error te sale ???
  #4 (permalink)  
Antiguo 04/08/2010, 13:38
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: problemas con codigo ajax

mira ahoa cambie los codigos por estos porque como nadie contestaba bueno algo fui probando:

codigo ajax
Código:
function getXMLHTTPRequest (){
try {
req = new XMLHttpRequest();
}catch(err1){
       try {
	     req = new ActiveXObject("Msxml2.XMLHTTP");
	   }catch(err2){
	      try { req = new ActiveXObject("Microsoft.XMLHTTP");
	   }catch(err3){
	    req = false;
	  }
    } 
  }
  return req;
}

var miPeticion = getXMLHTTPRequest ();
var http = getXMLHTTPRequest ();

function prevxfoto()
{
var ids = document.miform.namefoto.value;
var miAleatorio=parseInt(Math.random()*99999999);
var url = "servidorfotoprev.php?id=" + ids;
miPeticion.open("GET", url+ "&rand=" + miAleatorio, true);
miPeticion.onreadystatechange = respuestaAjaxFoto;
miPeticion.send(null);
}
function nexfoto()
{
var ids = document.miform.namefoto.value;
var miAleatorio=parseInt(Math.random()*99999999);
var url = "servidorfoto.php?id=" + ids;
miPeticion.open("GET", url+ "&rand=" + miAleatorio, true);
miPeticion.onreadystatechange = respuestaAjaxFoto;
miPeticion.send(null);
}

function respuestaAjaxFoto() {
if(miPeticion.readyState == 4) {
if(miPeticion.status == 200) {
 var datolink = miPeticion.responseXML.getElementsByTagName("link")[0];
 var datonamefoto = miPeticion.responseXML.getElementsByTagName("fotoname")[0];
 var datoid = miPeticion.responseXML.getElementsByTagName("id")[0];
 var textolink = datolink.childNodes[0].nodeValue;
 var textoid = datoid.childNodes[0].nodeValue;
 var textonamefoto = datonamefoto.childNodes[0].nodeValue;
 document.getElementById('foto').innerHTML = ("<a href=\"javascript:;\" onclick=\"nexfoto();\"><img src=\"" + textolink + "\" width=\"600\"></img></a>");			
 document.getElementById('namefoto').innerHTML = ("<input type=\"hidden\" id=\"namefoto\" value=\"" + textoid + "\"></form>");
 document.getElementById('actual').innerHTML = (textonamefoto);
 document.getElementById('nombrefoto').innerHTML = (textonamefoto);
			


        } else {
		alert("Ha ocurrido un error: " + miPeticion.statusText);
        }
    } else {     // si readyState ha cambiado
                 // pero readyState <> 4
           document.getElementById('foto').innerHTML = '<img src="jpg/cargador.jpg">';
    }

}

function comentarios() {

  var myurl = 'servidorcomentario.php?id=';
  var idss = document.miform.namefoto.value;
  var comentario = document.comentariofoto.comentario.value;
  var usuario = document.comentariofoto.username.value;
  
    myRand = parseInt(Math.random()*999999999999999);
    // saltarse la cache
   
   var modurl = myurl+escape(idss)+"&comentario="+escape(comentario)+"&username="+escape(usuario)+"&rand="+myRand;
   http.open("GET", modurl, true);
   http.onreadystatechange = useHttpResponse;
   http.send(null);
}
function useHttpResponse() {
   if (http.readyState == 4) {
    if(http.status == 200) {
       // primero elimina los nodos hijos
       // presentes en el contenedor div
       while (document.getElementById('newcomentary') .hasChildNodes())
      {
document.getElementById('newcomentary').removeChild(document .getElementById('newcomentary').firstChild);
      }
      var userNodes = http.responseXML .getElementsByTagName("usuario");
      var comentaryNodes = http.responseXML .getElementsByTagName("comentario");
      var fechaNodes = http.responseXML .getElementsByTagName("fecha");
	  var horaNodes = http.responseXML .getElementsByTagName("hora");
	  
      for(var i =1;i<userNodes.length;i++)
      {
        var newuser = document .createTextNode(userNodes[i] .childNodes[0].nodeValue);
        var newpara = document.createElement('p');
        var para = document.getElementById('newcomentary') .appendChild(newpara);
        newpara.appendChild(newuser);
        

        var newtext2 = document .createTextNode(comentaryNodes[i] .childNodes[0].nodeValue);
        var newpara2 = document.createElement('p');
        var para2 = document .getElementById('newcomentary').appendChild(newpara2);
        newpara2.appendChild(newtext2);
        
		
        var newtext3 = document .createTextNode(fechaNodes[i] .childNodes[0].nodeValue);
        var newpara3 = document.createElement('p');
        var para3 = document.getElementById('newcomentary') .appendChild(newpara3);
        newpara3.appendChild(newtext3);
        
		
		var newtext4 = document .createTextNode(horaNodes[i] .childNodes[0].nodeValue);
        var newpara4 = document.createElement('p');
        var para3 = document.getElementById('newcomentary') .appendChild(newpara4);
        newpara4.appendChild(newtext4);
        
      }
    }
  }
}
y el servidor php tiene este codigo:
Código PHP:
include("fns.php");
include("loops.php");

header('Content-Type: text/xml');
echo "<?xml version="1.0\" ?>";
echo 
"<comentarios>";

        
$db_conn db_connect();

     
$username $_GET['username'];
     
$id $_GET['id'];
     
$comentario $_GET['comentario'];
     
$year date("Y");
     
$mes date("m");
     
$dia date("d");
     
$hora date("H");
     
$minuto date("i");
     
$segundo date("s");
     
     
$insertcomentario "insert into comentarios_fotos values ('".$id."', '".$username."', '".$comentario."', '".$year."', '".$mes."', '".$dia."', '".$hora."', '".$minuto."', '".$segundo."')";
     
$resultinsert mysql_query($insertcomentario$db_conn) or die (mysql_error());
     
     
$querycomentario "select * from comentarios_fotos where id = '$id'";
     
$resultcomentario mysql_query ($querycomentario$db_conn) or die (mysql_error());
     
$numcomentario mysql_num_rows($resultcomentario);
     
     if (
$numcomentario>0)
     {
          while (
$array mysql_fetch_array($resultcomentario))
          {
             
$user $array['usuario'];
             
$comentario $array['comentario'];
             
$fecha $array["dia"]."-".$array["mes"]."-".$array["year"];
             
$hora $array["hora"].":".$array["minuto"].":".$array["segundo"]." Hs:";
             
             echo 
"<comen>
                   <usuario>$user</usuario>
                   <comentario>$comentario</comentario>
                   <fecha>$fecha</fecha>
                   <hora>$hora</hora>
                   </comen>"
;  
          }
     }
     
     
        echo 
"</comentarios>";
al menos me muestra ol el nombre o el comentario no se bien cual de los dos pero en este codigo no esta formateado.

el error es el siguiente:

Error: comentaryNodes[i].childNodes[0] is undefined
Archivo de origen: http://localhost/municipios/fotos.ph...01971.JPG&id=8
Línea: 107

el sistema esta bien asi como lo quiero armar es un sistema donde hay una foto y la gente la comenta cuando envias el comentario lo carga y actualiza con ajax los anteriores comentarios y te los muestra formateados

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:58.