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

Problema AJAX + JavaScript

Estas en el tema de Problema AJAX + JavaScript en el foro de Frameworks JS en Foros del Web. Hola, este tema está tratado ya en otro topic donde daban una solución. Pero la verdad es que por más que lo he leido no ...
  #1 (permalink)  
Antiguo 08/08/2009, 11:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema AJAX + JavaScript

Hola, este tema está tratado ya en otro topic donde daban una solución.

Pero la verdad es que por más que lo he leido no lo he entendido, estoy empezando en javascript y ajax y en ese post deben de dar varias cosas ya por sabidas porque no consigo seguirlo en algunas partes.

Tengo un div en el que quiero cargar un fchero php. Este .php dentro tiene código javascript y tambien codigo javascript de la API de Google Maps. Pero al cargar el fichero en el div no me muestra ninguno de los 2 códigos javascript.

Mi fichero ajax.jx es
Código:
function llamarasincrono (url, id_contenedor)
{
    var pagina_requerida = false;
    if (window.XMLHttpRequest)
    {
        // Si es Mozilla, Safari etc
        pagina_requerida = new XMLHttpRequest ();
    } else if (window.ActiveXObject)
    {
        // pero si es IE
        try 
        {
            pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            // en caso que sea una versión antigua
            try
            {
                pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
            }
            catch (e)
            {
            }
        }
    } 
    else
    return false;
    pagina_requerida.onreadystatechange = function ()
    {
        // función de respuesta
        cargarpagina (pagina_requerida, id_contenedor);
    }
    pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
    pagina_requerida.send (null);
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina (pagina_requerida, id_contenedor)
{
    if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
    document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;
}
Y la parte donde está el enlace que carga el .php externo en el DIV es:
Código PHP:
<div id="menu"> <a href="javascript:llamarasincrono('insertarMarca.php', 'contenidos');">Entrar</a></div

Agradezco cualquier ayuda, he buscado mucho sobre este tema pero no entiendo la mayor parte de las soluciones, no hay ningun ejemplo simple con los pasos a seguir para poder hacerlo.
Gracias, un saludo.
  #2 (permalink)  
Antiguo 08/08/2009, 13:04
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema AJAX + JavaScript

Hola

Supongo que te refieres a esto

leerJSdesdeAJAX.js

Código javascript:
Ver original
  1. var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  2. /**
  3. * Eval script fragment
  4. * @return String
  5. */
  6. String.prototype.evalScript = function()
  7. {
  8.         return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
  9. };
  10. /**
  11. * strip script fragment
  12. * @return String
  13. */
  14. String.prototype.stripScript = function()
  15. {
  16.         return this.replace(new RegExp(tagScript, 'img'), '');
  17. };
  18. /**
  19. * extract script fragment
  20. * @return String
  21. */
  22. String.prototype.extractScript = function()
  23. {
  24.         var matchAll = new RegExp(tagScript, 'img');
  25.         return (this.match(matchAll) || []);
  26. };
  27. /**
  28. * Eval scripts
  29. * @return String
  30. */
  31. Array.prototype.evalScript = function(extracted)
  32. {
  33.                 var s=this.map(function(sr){
  34.                 var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
  35.                 if(window.execScript){
  36.                 window.execScript(sc);
  37.                 }
  38.                 else
  39.                 {
  40.                  window.setTimeout(sc,0);
  41.                 }
  42.                 });
  43.                 return true;
  44. };
  45. /**
  46. * Map array elements
  47. * @param {Function} fun
  48. * @return Function
  49. */
  50. Array.prototype.map = function(fun)
  51. {
  52.         if(typeof fun!=="function"){return false;}
  53.         var i = 0, l = this.length;
  54.         for(i=0;i<l;i++)
  55.         {
  56.                 fun(this[i]);
  57.         }
  58.         return true;
  59. };

Aquí haces estos cambios

Cita:
<script type="text/javascript" src="./leerjsdeajax.js"></script>
....
if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
var scs=ajax.responseText.extractScript();
document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText.stripScript();
scs.evalScript();
}
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 08/08/2009, 13:19
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema AJAX + JavaScript

Hola, he hecho esos cambios pero hace exactamente lo mismo que antes. Solo muestra el html y el javascript nada de nada.
  #4 (permalink)  
Antiguo 08/08/2009, 15:39
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema AJAX + JavaScript

Hola

.... perdona, esto
var scs=ajax.responseText.extractScript();

en tu caso tendría que ser

var scs=pagina_requerida.responseText.extractScript();

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 00:57.