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:
archivo index.html o php que contiene los divsfunction 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; }
Código:
ejemplo.php<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
Código:
Ventajas<?php echo "Este es el php que tiene un javascript"; ?> <script>alert("Desde php");</script>
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