AJAX - En que falla?

   
Vista:

En que falla?

Publicado por gerardo medina (7 intervenciones) el 08/10/2007 18:42:53
Bueno ya llevó con AJAX, hace 1 año y meses y se me ocurrió esta idea...

------------------
PagPHP.php
------------------

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Página PHP</title>

<script>
function crearScript()
{
etiquetaScript=document.createElement("script"); //crea etiqueta escript
etiquetaScript.setAttribute("src","proceso.php"); //le asigna ruta
etiquetaScript.setAttribute("language","php"); //le asigna el lenguaje escript
document.getElementById("divContenedor").appendChild(etiquetaScript); //esa etiqueta la agrega en el div
}
</script>
</head>
<body>
<input type="button" onclick="crearScript()" value="Activar Script" /><hr />
<div id="divContenedor"></div><br />
</body>
</html>

-------------------
Proceso.php
------------------
<?
echo "<strong> demostración </strong>";
?>

Ya probé con el caso de la página Proceso retirarle los "<? ?>", e igual no activa. La fuente presentada funciona bien para "language" Javascript.. Pero el esquema lógico no esta mal? (creo yo). Y además esta bajo una página ".php", así que en el proceso de compilación debe reconecer sobre php. Coloqué aun con etiquetas "strong" en proceso, porque bajo DOM, para hacer un "appendChild", debe ser un nodo también...

Pues que me dicen?, qué esta fallando... GRACIAS!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:En que falla?

Publicado por Yamil Bracho (177 intervenciones) el 09/10/2007 17:39:18
Cuando haces appendChild agregas un elemento DOM al documento. PHP es una tecnologia que se evalua del lado del servidor y en este caso no veo la llamada a XmlHhttpRequest para que se ejecuta Proceso.php y si te devuelva el codigo HTML que contiene.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:En que falla?

Publicado por gerardo medina (7 intervenciones) el 10/10/2007 05:53:24
Precisamente, AJAX abarca muchos conceptos como el DHTML y CSS... Y Javascript Avanzado orientado a DOM. Lo que mencionas del "XmlHhttpRequest ", no me es novedad: sè lo que hace. El detalle es cuando creas "nodos render" como lo hace ajax através de DOM, puedes crear objetos de todo tipo. Ya lo probè con lo mencionado en FIREFOX (con plugin depurador) no me me devuelve data, pero tampoco me arroja error.
Ya sè que compila lado servidor PHP (si leíste como presentaba lo mencionado en el comentario). Si sè creasè en este nodo virtual serìa bajo language "PHP", cosa y como mencionaba estoy bajo un pag ".php" (una pàgina que compila primero lado servidor depues lo imprime bajo texto plano bajo html o javascript). Una respuesta más expresa, por favor!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:En que falla?

Publicado por Yamil Bracho (177 intervenciones) el 10/10/2007 17:10:11
Creo que no te explicaste bien, pero cuando veo otra vez el codigo veo el punto. En la linea

etiquetaScript.setAttribute("src","proceso.php"); //le asigna ruta

Cuando se esta ejecutando esta linea ? Si vemos lo que tratas de decir en el codigo es que quieres que PHP sea un script de lado del cliente...

Lo ves ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:En que falla?

Publicado por gerardo medina (7 intervenciones) el 11/10/2007 18:11:46
NO!! el atributo SRC, indica una ruta o un path. Ahora este atributo varia su comportamiento sengún el nodo. Una imagen te carga la imagen, EN UN SCRIPT, captura el texto que contiene esta y la carga dentro del script, siendo este beneficio un código recursivo lo inquivalente a include...

Si deseas probar algo es lo siguiente, por ejemplo sabías si tuvieses un codigo script (bajo language= Javascript) y le das el SRC con una direccion .php: FUNCIONA (en vez de un .js/ En Firefox) si deseas procesas bajo primero la compilación de php (obvio) y luego imprimes texto bajo sintaxis javascript, y esa partitura va funcionar en tan página vinculada. Por ejemplo:

miPag.html
------------------
<script src="proceso.php"></script>
<script>
function crearScript()
{
etiquetaScript = document.createElement("script");
etiquetaScript.setAttribute("src","proceso.php");
document.getElementById("divContenedor").appendChild(etiquetaScript);
}
<body>
<div id="divContenedor"></div>
</body>

proceso.php
----------------
<?
echo "document.write('<b>$HTTP_USER_AGENT</b>')";
?>

Yo lo creo más al FireFox, porque sigue más fielmente las normas del W3C, que el IE... "muestra de una perla": que IE queire imponer el xmlHttpRequest, como un ActiveX; siendo en otros navegadores un objeto nativo por norma W3C.
El ejemplo anterior tu lo resolvería con navigator.appVersion. Pero para el ejemplo te imprime lo mismo. El detalle de este.
NO necesariamente debe ser con un get o post, capturo el texto compilado de PHP. Lo imprimió sin necesidad de xmlHttpRequest.

Además tu podrías enviar un GET también y enviar una variable y tener un fuente javascript dinámica, totalmente oculta para otras.

Pero alguna otra respuesta?, convincente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:En que falla?

Publicado por Gonzalo (26 intervenciones) el 30/10/2007 14:12:44
Falla en esto:

Cuando creas el nodo script, con la ruta Proceso.php, lo que espera el navegador es encontrar código Javascript. Tú Proceso.php no está devolviendo Javascript sino directamente HTML. Es decir, lo que estás haciendo es equivalente a escribir:

<script src="loquesea" />
Y ese loquesea tiene que ser código Javascript.

Por otro lado, da igual que "agregues esa etiqueta en el div", porque no estás agregando su contenido, sino la etiqueta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar