|
|
#1 (permalink) |
![]() |
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#3 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Nadie tiene al menos una idea remota de como hacer funcionar un script regresado por un ajax entonces ??
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#4 (permalink) |
![]() Fecha de Ingreso: diciembre-2006
Ubicación: Querétaro
Mensajes: 184
|
Re: sobre ajax, porque no lo hace ?
hola,
antes que nada déjame ver si te entiendo: recibes una respuesta AJAX que contiene, por ejemplo:
Código:
y quieres ejecutar eso.ajax = "alert('hola')";
Puedes intentarlo con eval:
Código:
es lo mismo queeval(ajax);
Código:
Ahora bien, no sé qué tan seguro sea recibir código ejecutable mediante AJAX, tal vez quieras pensar en otra implementación.eval("alert('hola')");
saludos ![]() |
|
|
|
|
|
#5 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
mmm..!!
sigue sin funcionar.. lo que quiero hacer es mandar datos a una pagina y recibir la respuesta mediante ajax.. ahora lo mas interesante es que la respuesta de ajax contenga codigo javascript que me permita ejecutar funciones. Por ej.. Envio datos a procesar.php y este regresa un mensaje, lo que trato de hacer es que el mensaje que me regresa procesar.php aparezca usando un efecto de moo.fx Lo malo es que no se porq ajax no ejecuta codigo javascript, incluso le digo a procesar.php que regrese esto y no pasa nada. $output = '<script language="Javascript">eval(\'alert("Hola")\');</script>'; entonces ajax escribe <script language="Javascript">eval('alert("Hola")');</script> pero nunca se ejecuto ese script
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#6 (permalink) |
![]() ![]() |
Re: sobre ajax, porque no lo hace ?
loading............
podrias ILUSTRARNOS el como quieres evaluar tu javascript? y como te dijeron si recibes el texto Código PHP:
Código PHP:
connection closed.
__________________
http://www.maborak.com Maborak technologies |
|
|
|
|
|
#7 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
pues ninguna llamada a un script ha funcionado hasta el momento.. pense que sabia JScript hasta este momento que me quede pegao en el tema..
Pero bueno, asi como han escrito el eval deberia de mostrarme el alert que se regresa mediante el ajax.. la cosa es que no lo hace.. Cualquier tipo de script que deba regresar con ajax lo omite y no lo ejecuta.. mi pregunta es que si saben el porque pasa esto o como se puede solucionar.. Y claro que podria hacerlo si modificara mi libreria de ajax, solo seria cosa de ponerle algo de codigo en evento onreadystatechange, pero el caso es que no quiero hacerlo porq mi libreria no debe de ser especificamente solo para imprimir mensajillos con efectos de la libreria moo.fx. En si lo que quiero hacer se puede.. pienso yo.. pero debe de haber alguna forma de ejecutar codigo de javascript regresado en un ajax.
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#8 (permalink) |
![]() ![]() |
Re: sobre ajax, porque no lo hace ?
loading..........
un intento mas: y si haces: Código PHP:
Sino, usa JSON del lado de javascript para convertir esa cadena en un objeto. www.json.org connection closed.
__________________
http://www.maborak.com Maborak technologies |
|
|
|
|
|
#9 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Esto se me hace chistoso.. porque sigue sin funcionar.. desconozco la razon por la cual no me permita hacer lo que quiero..
y pues un intento mas que no ha funcionado.. ahora vere si con json puedo lograrlo..
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#10 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Esto se me hace chistoso.. porque sigue sin funcionar.. desconozco la razon por la cual no me permita hacer lo que quiero.. ahora posteare un ultrasuperlight ejemplo que hice.. unicamente son 2 archivos..
archivo ejemplo.php Código PHP:
Código PHP:
QUE SERA ?????
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#11 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Por lo visto nadie tuvo solucion a esto.. entonces les explicare brevemente porque pasa eso..
Segun encontre cualquier tipo de script que venga en la respuesta de un ajax no se ejecutara por motivos de seguridad por lo cual hay que parsear la respuesta en busca de scripts y luego ejecutarlos pero desde la aplicacion que usa el ajax.. se ve algo complejo.. pero no lo es tanto asi.. var scripts = document.getElementById('contenedorajax').innerHTM L; scripts = script.extractScripts(); esto existe y es para encontrar todos los javascript incluidos en una pagina ahora para ejecutar los script window.execScript(scripts); esto no termina aqui, ya que debe de haber un ciclo for para obtener el numero de scripts encontrados y dentro de ese for hacer que se ejecuten.. cuando lo termine se los posteare para que vean como ha quedado.
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#12 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Y pues como lo habia prometido, lo que estuve intentando hacer la semana pasada ya esta completamente funcional, al fin supe ejecutar scripts enviados en un request para ajax.. y el codigo es el siguiente.. no puse todo el codigo, pero ahi esta lo mas importante..
Código:
// se guarda la respuesta pedida mediante ajax
result = http_request.responseText;
// cargo en mi elemento destino la respuesta
document.getElementById(elemento_res).innerHTML = result;
// ahora en busca de scripts para ser ejecutados
buscarscripts(elemento_res);
function buscarscripts(elemento_res) {
var script = document.getElementById(elemento_res).innerHTML;
script = script.extractScripts();
for(i=0;i<script.length;i++)
instalar(script[i]);
}
function instalar(script) {
script = script.replace("<!--","");
script = script.replace("//-->","");
if (window.execScript)
window.execScript(script);
else
window.setTimeout(script, 0);
}
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#13 (permalink) |
![]() ![]() |
Re: sobre ajax, porque no lo hace ?
loading............
Eso no es Crossbrowser supongo. connection closed.
__________________
http://www.maborak.com Maborak technologies |
|
|
|
|
|
#14 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
las funciones que ven como el extractScripts() y el execScript() son totalmente crossbrowser aunque tienen ciertos problemas con el parseo de algunas etiquetas como el src.. pero en delante son parte de un estandar segun lei.. ahora.. no solo estas funciones se pueden utilizar.. tambien encontre que prototype tiene las mismas funciones implementadas de forma diferente dando el mismo resultado.. por si no funciona una funciona la otra..
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#15 (permalink) |
![]() Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 738
|
Re: sobre ajax, porque no lo hace ?
Cita:
Para los que somos un poco mas torpes, podrias poner un ejemplo funcional, con todo su codigo, gracias
Iniciado por erlingfiallos
Y pues como lo habia prometido, lo que estuve intentando hacer la semana pasada ya esta completamente funcional, al fin supe ejecutar scripts enviados en un request para ajax.. y el codigo es el siguiente.. no puse todo el codigo, pero ahi esta lo mas importante..
Código:
// se guarda la respuesta pedida mediante ajax
result = http_request.responseText;
// cargo en mi elemento destino la respuesta
document.getElementById(elemento_res).innerHTML = result;
// ahora en busca de scripts para ser ejecutados
buscarscripts(elemento_res);
function buscarscripts(elemento_res) {
var script = document.getElementById(elemento_res).innerHTML;
script = script.extractScripts();
for(i=0;i<script.length;i++)
instalar(script[i]);
}
function instalar(script) {
script = script.replace("<!--","");
script = script.replace("//-->","");
if (window.execScript)
window.execScript(script);
else
window.setTimeout(script, 0);
}
bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo" Linux Registered User #320332 |
|
|
|
|
|
#16 (permalink) |
![]() Fecha de Ingreso: octubre-2005
Mensajes: 2
|
Gracias
Tenia el mismo problema cuando queria procesar un formulario con un action del tipo (javascript:consultar()). Que me servia cuando lo procesaba directamente a traves de URL pero cuando lo cargaba en un div contenedor me salia un error de objeto inexistente en javascript. Como me temia y como me lo confirmaste el problema era el procesar codigo javascript en un request. Gracias por la solucion. |
|
|
|
|
|
#17 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Aqui les dejo el funcionamiento de javascript con ajax.
Se crean el archivo ejemplo.php y el archivo proc.php y pegan sus respectivos codigos, incluyo una funcion que he estado haciendo para el uso de ajax que se llama MakeRequest, esta de mas explicar como funciona.. la pagina proc.php responde con un arreglo de las variables enviadas desde ejemplo.php usando GET y tambien imprime un pequeño script alert. Hasta aqui todo funciona bien y cuando hacen click sobre el link que puse en la pagina ejemplo.php veran impreso el arreglo de variables y el mensaje de "Hola mundo.." como alert. Ahora en la funcion MakeRequest si comentan donde dice "buscarscripts(elemento_res);" el alert ya no aparecera.. ese es el problema o duda que se habia tenido hasta el momento. Para poder usar la funcion buscarscripts() hay que tener incluida la libreria de prototype y yo lo tome directamente desde la pagina web, por si alguno no la tiene. Si hay dudas aqui seguimos para aclararlas.. Suerte.. ejemplo.php Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Cargar JavaScript con Ajax</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://www.prototypejs.org/javascripts/prototype.js" type="text/javascript"></script> <style type="text/css"> /*<![CDATA[*/ body {font-family: Arial, Helvetica, sans-serif;font-size: 13px;color: #404040;font-weight: bold;} /*]]>*/ </style> <script language="JavaScript"> //<![CDATA[ var http_request = false; function MakeRequest(metodo, url, parametros, elemento_res) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { // se anticipa a que el tipo regresaro sera un mime ('text/xml'); http_request.overrideMimeType('text/html'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('No se puedo crear una instancia de XMLHTTP'); return false; } if (metodo == 'post') { http_request.open('POST', url, true); http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http_request.setRequestHeader("Content-length", parametros.length); } else { http_request.open('GET', url+"?"+parametros, true); http_request.setRequestHeader("Content-type", "text/html"); http_request.setRequestHeader("Content-length", parametros.length); } http_request.setRequestHeader("Connection", "close"); http_request.send(parametros); http_request.onreadystatechange = function() { if (http_request.readyState == 4) { if (http_request.status == 200) { result = http_request.responseText; document.getElementById(elemento_res).innerHTML = result; buscarscripts(elemento_res); } else { alert('Error al hacer request.'); } } else { document.getElementById(elemento_res).innerHTML = "Cargando..."; } } } function getdata(frm) { var parametros = ''; for (i=0; i<=document.getElementById(frm).elements.length-1; i++) { elemento = document.getElementById(frm).elements[i]; if (elemento.type != 'submit') parametros = parametros + elemento.id+"="+elemento.value+"&"; } parametros = parametros.substring(0,parametros.length-1); return parametros; } function buscarscripts(elemento_res) { var script = document.getElementById(elemento_res).innerHTML; script = script.extractScripts(); for(i=0;i<script.length;i++) instalar(script[i]); } function instalar(script) { script = script.replace("<!--",""); script = script.replace("//-->",""); if (window.execScript) window.execScript(script); else window.setTimeout(script, 0); } //]]> </script> </head> <body> <h2>Cargar usando GET</h2> <a href="javascript:void(0)" onclick="javascript:MakeRequest('get', 'proc.php', 'valor0=ajax&valor1=web2.0&valor3=javascript', 'respuesta');">Click aqui</a><br /> <div id="respuesta" name="respuesta"></div> </body> </html> Código PHP:
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|
|
|
#18 (permalink) |
![]() Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 738
|
Re: sobre ajax, porque no lo hace ?
Donde llamas a la funcion:
Código:
y supongo que le pasas el getdata(frm);
Código:
elemento_res getdata(elemento_res); bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo" Linux Registered User #320332 |
|
|
|
|
|
#19 (permalink) |
![]() |
Re: sobre ajax, porque no lo hace ?
Bueno, no quize explicar todo el codigo para no hacerlo mas complejo, pero la funcion getdata() la uso cuando envio datos por el POST usando un formulario.. Si ven bien lo que hace esta funcion es leer todos los elementos que estan dentro de un form y armar una cadena donde se contatena el id del control y su valor.. lo que retorna es la cadena parecida a las que se pasan por la url. Esta funcion sigue en desarrollo y optimizacion. Si alguien tiene una idea de mejorar la funcion, pues bienvenido sea.
__________________
Jack Fiallos (AkKa Erling) Vive e sonha quem morre e não ao duer a mim Jack Fiallos WebBlog |
|
|
|