Foros del Web » Programando para Internet » Javascript »

Ejecutar javascript luego de usar ajax en php

Estas en el tema de Ejecutar javascript luego de usar ajax en php en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/08/2015, 15:11
 
Fecha de Ingreso: noviembre-2005
Mensajes: 1
Antigüedad: 18 años, 5 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

Etiquetas: ajax, funcion, html, js, php, usar, valor
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 17:34.