Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2015, 15:11
ricardocalvimonte
 
Fecha de Ingreso: noviembre-2005
Mensajes: 1
Antigüedad: 19 años, 4 meses
Puntos: 0
Ejecutar javascript luego de usar ajax en php

Descripción del problema
Cuando cargas un php usando ajax, el javascript deja de funcionar, o cuando usas por segunda vez ajax a veces a no funciona

La primera solución que probé es en php poner lo siguiente en el onclick:
onclick=javascript:"el metodo que usas", esto funciona, pero cuando quieres mostrar un alert sin usar un onclick no da, la segunda solución que encontré es :

http://www.forosdelweb.com/f127/howto-ejecutar-javascript-que-viene-ajax-510438/
esta funciona para los que usan prototype,

En si la solución que planteare es la misma que la de arriba, pero sin usar prototype, adaptada a solo ajax

Solución
Archivo ajax.js

Código:
function objetoAjax(){
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
		   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
  		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function MenuCentral(destino){ 
  divResultado = document.getElementById('Contenido');
  divResultado.innerHTML= '<img src="anim.gif">';

  
  //instanciamos el objetoAjax
  ajax=objetoAjax();
  //uso del medoto POST
  //archivo que realizará la operacion
  //registro.php
  ajax.open("POST", destino,true);
	  ajax.onreadystatechange=function() {
		  if (ajax.readyState==4) {
			texto = rescatar_script(ajax.responseText);
		  //mostrar resultados en esta capa
		  divResultado.innerHTML = texto;
		  }
	  }

  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  //enviando los valores
  ajax.send();
}

function rescatar_script(texto)
{
	var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
	
		var pat2=/\bsrc=[^>\s]+\b/g;
		var elementos = texto.match(pat) || [];
		for(i=0;i<elementos.length;i++) {
			var nuevoScript = document.createElement('script');
			nuevoScript.type = 'text/javascript';
			var tienesrc=elementos[i].match(pat2) || [];
			if(tienesrc.length){
				nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
			}else{
				var elemento = elementos[i].replace(pat,'$1','');
				nuevoScript.text = elemento;
			}
			document.getElementsByTagName('body')[0].appendChild(nuevoScript);
		}
		var texto1 = texto.replace(pat,'');
		
		return texto1;
}
archivo index.html o php que contiene los divs
Código:
<html>
<head>
	<title>AJAX</title>
	<script type="text/javascript" src="ajax.js"></script>
</head>

<body>

        <div id="Contenido">
                 <script>MenuCentral("ejemplo.php")</script>
	</div>
	
</body>

ahora una prueba
ejemplo.php
Código:
<?php
    echo "Este es el php que tiene un javascript";

?>
<script>alert("Desde php");</script>
Ventajas
La ventaja con este código es que cuando uno crea otra pagina que también tiene divs, estos también son reconocidos, facilitando el uso de ajax para los menus y el código


Espero que les sirva
Fuente
Una adaptación de la pagina que mencione y otra la cual no encuentro en este momento

el ejemplo lo hice lo mas sencillo que pude, cualquier duda no duden en preguntar :D