Foros del Web » Programando para Internet » Javascript » Frameworks JS »

ejecutar funcion php desde ajax

Estas en el tema de ejecutar funcion php desde ajax en el foro de Frameworks JS en Foros del Web. Hola! tengo un problema con la ejecución de funciones php, ya que no se ejecutan, sino que se imprime su contenido ¿por qué puede ser? ...
  #1 (permalink)  
Antiguo 15/01/2010, 01:55
 
Fecha de Ingreso: enero-2010
Mensajes: 21
Antigüedad: 14 años, 10 meses
Puntos: 0
ejecutar funcion php desde ajax

Hola!

tengo un problema con la ejecución de funciones php, ya que no se ejecutan, sino que se imprime su contenido ¿por qué puede ser?

Este es mi fuchero ajax.js:
Código Javascript:
Ver original
  1. function generaTablas(nEnlaces){
  2.     //  Primero vamos a ver si la URL es una URL :)
  3.  
  4.     //  Usuario inteligente...
  5.     if (window.XMLHttpRequest) {
  6.         req = new XMLHttpRequest();
  7.         req.onreadystatechange = processReqChange;
  8.         req.open("POST", "funciones_ajax.inc", true);
  9.         req.send("numero="+nEnlaces+"&FUNCION=pintarTablaDatos");
  10.     //  ...y usuario de Internet Explorer Windows
  11.     } else if (window.ActiveXObject) {
  12.         isIE = true;
  13.         req = new ActiveXObject("Microsoft.XMLHTTP");
  14.         if (req) {
  15.             req.onreadystatechange = processReqChange;
  16.             req.open("POST", "funciones_ajax.inc",true);
  17.             req.send("numero="+nEnlaces+"&FUNCION=pintarTablaDatos");
  18.         }
  19.     }
  20. }
  21.  
  22. //  Funcion que se llama cada vez que se dispara el evento onreadystatechange
  23. //  del objeto XMLHttpRequest
  24. function processReqChange(){
  25.     var contenedorTablas = document.getElementById("tablas_relleno");
  26.     if(req.readyState == 4){
  27.         contenedorTablas.innerHTML = req.responseText;
  28.     }
  29. }

Este es mi fichero funciones_ajax.php, con la función llamada:

Código PHP:
Ver original
  1. eval ('$_POST["FUNCION"]($_POST["numero"]);');
  2. function pintarTablaDatos($nEnlaces){
  3.     $loc = "Origen";
  4.  
  5.     $x = array("Nº", "Equipo", "SUBR/A155M" , "SLOT/VC4", "PUERT/VC12", "E1");
  6.     echo "<table id=\"tabla$loc\">";
  7.     echo "<tr>";
  8.     echo "<th colspan=\"6\">$loc</th>";
  9.     echo "</tr>";
  10.     echo "<tr class=\"pequeno\">";
  11.     for ($i=0;$i<=5;$i++) {
  12.         echo "<td>$x[$i]</td>";
  13.     }
  14.     echo "</tr>";
  15.     for ($j=0;$j<=$nEnlaces - 1;$j++) {
  16.         echo "<tr>";
  17.         for($h=0;$h<=5;$h++) { // nombre es loc_nEnlace_tipo
  18.             echo "<td><select name=\"$loc$j$x[$h]\" >";
  19.             echo "<option value=\"0\" selected>(select:)</option>";
  20.             echo "</select></td>";
  21.         }
  22.         echo "</tr>";
  23.     }
  24.     echo "</table>";
  25. }

y la salida en el navegador es algo asi...

"; echo ""; echo "$loc"; echo ""; echo ""; for ($i=0;$i<=5;$i++) { echo "$x[$i]"; } echo ""; for ($j=0;$j<=$nEnlaces - 1;$j++) { echo ""; for($h=0;$h<=5;$h++) { // nombre es loc_nEnlace_tipo echo ""; } echo ""; } echo ""; } ?>

gracias!
  #2 (permalink)  
Antiguo 15/01/2010, 10:45
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: ejecutar funcion php desde ajax

pues la verdad no veo porque el motivo, intenta primero ejecutar la funcion sin necesidad de eval, haber que pasa, de ese modo podriamos descartar si es que eval retorna una cadena de texto con el codigo de la funcion que evalua.
  #3 (permalink)  
Antiguo 15/01/2010, 12:33
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: ejecutar funcion php desde ajax

Primero que nada no entiendo el porque de los comentarios

"// Usuario inteligente..." y "// ...y usuario de Internet Explorer Windows"

La verdad me parecen algo "agresivos" y ademas si me permites no tienes porque poner a todos en la misma bolsa. O sea no se tu, pero yo conozco muchos programadores EXCELENTES que usan IE.

La verdad que un usuario use o no IE o FF o lo que sea, no tiene nada que ver con su "intelectualidad". Cosa que tu juzgas teniendo en cuenta ese criterio. Lo unico que demuestras posteando ese tipo de comentarios es que:

1) Quieres que alguien demuestre cierta "compatibilidad" contigo, apoyando lo que ese comentario dice

2) Tienes realmente mucho tiempo para perder

En cuanto a tu problema, porque no pruebas haciendo esto:

Código PHP:
function pintarTablaDatos($nEnlaces){
    
$loc "Origen";
 
    
$x = array("Nº""Equipo""SUBR/A155M" "SLOT/VC4""PUERT/VC12""E1");
    echo 
"<table id=\"tabla$loc\">";
    echo 
"<tr>";
    echo 
"<th colspan=\"6\">$loc</th>";
    echo 
"</tr>";
    echo 
"<tr class=\"pequeno\">";
    for (
$i=0;$i<=5;$i++) {
        echo 
"<td>$x[$i]</td>";
    }
    echo 
"</tr>";
    for (
$j=0;$j<=$nEnlaces 1;$j++) {
        echo 
"<tr>";
        for(
$h=0;$h<=5;$h++) { // nombre es loc_nEnlace_tipo
            
echo "<td><select name=\"$loc$j$x[$h]\" >";
            echo 
"<option value=\"0\" selected>(select:)</option>";
            echo 
"</select></td>";
        }
        echo 
"</tr>";
    }
    echo 
"</table>";
}

if(
$_POST["FUNCION"] == 'pintarTablaDatos'){

pintarTablaDatos($_POST["numero"]);


__________________
HV Studio
Diseño y desarrollo web

Etiquetas: ajax, ejecutar, funcion, php
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 03:55.