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