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

Problema con lector RSS

Estas en el tema de Problema con lector RSS en el foro de Frameworks JS en Foros del Web. Hola, he leido y puesto en practica el tutorial sobre como crear un lector RSS con AJAX, el problema es que no sale la prueba. ...
  #1 (permalink)  
Antiguo 20/03/2009, 16:51
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Problema con lector RSS

Hola, he leido y puesto en practica el tutorial sobre como crear un lector RSS con AJAX, el problema es que no sale la prueba. Miren como se queda, y como se debería de quedar.

El lector se compone de estos archivos:
  • blog.php
  • rss.html
  • style.css
  • js
    • rss_header.js
Bueno, espero que entienda la estructura. Bueno, ahora, este es el codigo del JS:

Código javascript:
Ver original
  1. //variable global
  2. var i=1;
  3. //URI: dirección del RSS 2.0 (funciona solamente con Wordpress)
  4. var URL='blog.php';
  5. //función: llamarasincrono('URI', 'div-id',i);
  6. llamarasincrono(URL, 'rss',i);
  7. //Esta función cargará la información
  8. function llamarasincrono(url, id_contenedor,N) {
  9. var pagina_requerida = false
  10. if (window.XMLHttpRequest) {// Si es Mozilla, Safari, Etc..
  11. pagina_requerida ? new XMLHttpRequest ()
  12. } else if (window.ActiveXObject){// pero si IE
  13. try {
  14. pagina_requerida = new ActiveXObject(Msxml12.XMLHTTP")
  15. }
  16. catch (e){//Si es una versión antigua
  17. try {
  18. pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
  19. }
  20. catch (e){}
  21. }
  22. } else
  23. return false
  24. pagina_requerida.onreadystatechange=function(){//función de respuesta
  25. cargarpagina(pagina_requerida, id_contenedor,N)
  26. }
  27. pagina_requerida.open('GET', url, true) //asignamos los metodos open y send
  28. pagina_requerida.send(null)
  29. }
  30. //todo es correcto y ha llegado el momento de poner la información requerida
  31. //en su sitio en la pagina XHTML
  32. function  cargarpagina(pagina_requerida, id_contenedor,N){
  33. if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)){
  34. //usamos la propiedad responseXML: devuelve datos por el servidor en forma de documento XML
  35. var xml = pagina_requerida.responseXML;
  36. //encontramos el total de items en el RSS
  37. var limit = sml.getElementsByTagName('item').length;
  38. //Boton siguiente
  39. //i es la variable que irá incrementandose
  40. var next = "<next><a href=\"javascript:llamarasincrono(URI, 'rss',i);\">Siguiente</a></next>";
  41. //creamos el string donde irán las etiquetas y los valores
  42. var rss = "";
  43. //for de 2 ciclos, para mostrar 2 entradas a la vez
  44. for (var 1=N;1<=N+1;1++){
  45. //cogemos el titulo del primer item, luego del segundo, y así.
  46. var title = xml.getElementsByTagName('title').item(1).firstChild.data;
  47. var url = xml.getElementsByTagName('link').item(1).firstChild.data;
  48. var pubDate = xml.getElementsByTagName('pubDate').item(1).firstChild.data;
  49. var description = xml.getElementsByTagName('description').item(1).firstChild.data;
  50. //si la longitud de la entrada es mayor de 200 caracteres la cortamos y le ponemos un enlace
  51. if(description.length>200) { description = description.substr(0,200)+"...<br/><enlace><a href=\"" + url + "\">Leer más...</a></enlace><br/><br/>"; }else description=description+"<br/><br/>";
  52. //esto sirve para cortar el +0000 de la fecha en WordPress
  53. var date = pubDate.split(" +");
  54. //sumamos las variables a nuestro string
  55. rss = rss+"<fecha>"+date[0]+"<fecha><br/><titulo>"+title"</titulo><br/><description>"+description+"</description>";
  56. if (limit==1)
  57. //si nos pasamos del límite, la cortamos
  58. break;
  59. }
  60. //incrementamos la variable global
  61. i=i+2;
  62. //si nos pasamos del límite, volvemos a empezar
  63. if (i>limit)
  64. i=1;
  65. //metemos el string + el boton en el div-id que corresponde
  66. document.getElementById(id_contenedor).innerHTML=rss+next;
  67. //un pequeño mensaje para avisar que se esta cargando la información
  68. }else if (pagina_requerida.readyState == 1)
  69. document.getElementById(id_contenedor).innerHTML="<load>Cargando...</load>"
  70. }

Y este el PHP:

Código PHP:
Ver original
  1. <?php
  2. //aquí va la URL del RSS
  3. $filename = "http://todo-minijuegos.com/blog/index.php";
  4. header("Content-type:text/xml");
  5. readfile ($filename);
  6. ?>

Os pongo solamente esos archivos, ya que creo que es en ellos donde reside el problema.

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #2 (permalink)  
Antiguo 20/03/2009, 20:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con lector RSS

Primero, estás enlazando a un archivo .js incorrecto (no existe el archivo al que enlazas), y segundo, tienes un error de sintaxis en la línea 14 (que resulta obvio en el coloreado del código), te falta abrir el String.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 21/03/2009, 06:12
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Problema con lector RSS

Gracias David, pero sigue habiendo un error, no me carga, y ahora el JS lo tengo así:

Código javascript:
Ver original
  1. //variable global
  2. var i=1;
  3. //URI: dirección del RSS 2.0 (funciona solamente con Wordpress)
  4. var URL='blog.php';
  5. //función: llamarasincrono('URI', 'div-id',i);
  6. llamarasincrono(URL, 'rss',i);
  7. //Esta función cargará la información
  8. function llamarasincrono(url, id_contenedor,N) {
  9. var pagina_requerida = false
  10. if (window.XMLHttpRequest) {// Si es Mozilla, Safari, Etc..
  11. pagina_requerida ? new XMLHttpRequest ()
  12. } else if (window.ActiveXObject){// pero si IE
  13. try {
  14. pagina_requerida = new ActiveXObject("Msxml12.XMLHTTP")
  15. }
  16. catch (e){//Si es una versión antigua
  17. try {
  18. pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
  19. }
  20. catch (e){}
  21. }
  22. } else
  23. return false
  24. pagina_requerida.onreadystatechange=function(){//función de respuesta
  25. cargarpagina(pagina_requerida, id_contenedor,N)
  26. }
  27. pagina_requerida.open('GET', url, true) //asignamos los metodos open y send
  28. pagina_requerida.send(null)
  29. }
  30. //todo es correcto y ha llegado el momento de poner la información requerida
  31. //en su sitio en la pagina XHTML
  32. function  cargarpagina(pagina_requerida, id_contenedor,N){
  33. if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)){
  34. //usamos la propiedad responseXML: devuelve datos por el servidor en forma de documento XML
  35. var xml = pagina_requerida.responseXML;
  36. //encontramos el total de items en el RSS
  37. var limit = sml.getElementsByTagName('item').length;
  38. //Boton siguiente
  39. //i es la variable que irá incrementandose
  40. var next = "<next><a href=\"javascript:llamarasincrono(URI, 'rss',i);\">Siguiente</a></next>";
  41. //creamos el string donde irán las etiquetas y los valores
  42. var rss = "";
  43. //for de 2 ciclos, para mostrar 2 entradas a la vez
  44. for (var 1=N;1<=N+1;1++){
  45. //cogemos el titulo del primer item, luego del segundo, y así.
  46. var title = xml.getElementsByTagName('title').item(1).firstChild.data;
  47. var url = xml.getElementsByTagName('link').item(1).firstChild.data;
  48. var pubDate = xml.getElementsByTagName('pubDate').item(1).firstChild.data;
  49. var description = xml.getElementsByTagName('description').item(1).firstChild.data;
  50. //si la longitud de la entrada es mayor de 200 caracteres la cortamos y le ponemos un enlace
  51. if(description.length>200) { description = description.substr(0,200)+"...<br/><enlace><a href=\"" + url + "\">Leer más...</a></enlace><br/><br/>"; }else description=description+"<br/><br/>";
  52. //esto sirve para cortar el +0000 de la fecha en WordPress
  53. var date = pubDate.split(" +");
  54. //sumamos las variables a nuestro string
  55. rss = rss+"<fecha>"+date[0]+"<fecha><br/><titulo>"+title"</titulo><br/><description>"+description+"</description>";
  56. if (limit==1)
  57. //si nos pasamos del límite, la cortamos
  58. break;
  59. }
  60. //incrementamos la variable global
  61. i=i+2;
  62. //si nos pasamos del límite, volvemos a empezar
  63. if (i>limit)
  64. i=1;
  65. //metemos el string + el boton en el div-id que corresponde
  66. document.getElementById(id_contenedor).innerHTML=rss+next;
  67. //un pequeño mensaje para avisar que se esta cargando la información
  68. }else if (pagina_requerida.readyState == 1)
  69. document.getElementById(id_contenedor).innerHTML="<load>Cargando...</load>"
  70. }

No entiendo el porque sigue mal, he buscado mas errores parecidos al que me has dicho y no veo ninguno (al menos mi vista no ve ninguno).

¿Qué puede ser?

Estoy a la espera de respuestas en los dos .

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #4 (permalink)  
Antiguo 21/03/2009, 10:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con lector RSS

En la línea 11 nuevamente tienes un error de sintaxis, ya que colocas ? en lugar de =
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 21/03/2009, 10:48
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Problema con lector RSS

Ok, ese error ha sido corregido y me ocurrió porque en vez de pulsar el = pulsé el ? que está al lado del =.

Pero sigue habiendo errores, por lo visto reside en la linea 45, pero la 45 es un comentario :.

Ya está corregido:

Código javascript:
Ver original
  1. pagina_requerida = new XMLHttpRequest ()

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #6 (permalink)  
Antiguo 21/03/2009, 11:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con lector RSS

En la línea 44 también tienes un error. Lo más probable es que quisiste escribir:
Código javascript:
Ver original
  1. for (var l=N;l<=N+1;l++){
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 10:50.