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

PHP no recibe parametros por post

Estas en el tema de PHP no recibe parametros por post en el foro de Frameworks JS en Foros del Web. Hola gente, estoy viento esto de ajax de a poco y encontré en una página unos ejemplos, el tema es que cuando quiero probarlos no ...
  #1 (permalink)  
Antiguo 28/08/2010, 15:26
Avatar de totote  
Fecha de Ingreso: diciembre-2006
Mensajes: 61
Antigüedad: 18 años
Puntos: 0
PHP no recibe parametros por post

Hola gente, estoy viento esto de ajax de a poco y encontré en una página unos ejemplos, el tema es que cuando quiero probarlos no funciona y no se porqué.

básicamente es una página que si no está seteada la variable ajax mediante get, muestra la página, si está seteada toma un valor por post y lo devuelve, este es el código de "index.php":

Código PHP:
<?php
if (isset($_GET['ajax'])) {
    if (isset(
$_REQUEST['parametro'])) {
        
$id $_REQUEST['parametro'];
        echo 
"El valor es: " $id;
        die();
    }
    else {
        echo 
"No hay valor para el parametro";
        die();
    }
}

?>
<script> 
function AJAXCrearObjeto(){ 
    var obj;
    if(window.XMLHttpRequest) { // no es IE
        obj = new XMLHttpRequest();
    } else { // Es IE o no tiene el objeto
        try {
            obj = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
            alert('El navegador utilizado no está soportado');
        }
    }
    return obj;
}

getData = function () {
    var id = document.getElementById('id').value;
    var ajax = AJAXCrearObjeto();
    ajax.open('GET','index.php?ajax=true');
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            alert(ajax.responseText);
        }
        
    }
    ajax.send('parametro=' + escape(id));
}
</script>

<input type="text" id="id" value="" />
<input type="button" onclick="getData()" value="Request!" />
Cuando apreto el botón Request! siempre me devuelve "No hay valor para el parametro". Si alguien me puede guiar se lo agradecería.

Saludos!
  #2 (permalink)  
Antiguo 28/08/2010, 19:44
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: PHP no recibe parametros por post

se me hace confuso lo tuyo. primero, el titulo dice parametros por metodo POST, pero en el codigo no veo peticion POST sino GET. de todos modos, si fuera por POST creo que no recibiras la respuesta adecuada de php. ¿por que? fijate en el codigo php la primera condicion explicitamente utilizas el array $_GET el cual indica que la peticion debe realizarse por GET. pero luego la proxima condicion utiliza $_REQUEST, el cual la peticion puede realizarse tanto por POST, GET, HEAD, o la que sea. de todos modos, esta segunda condicion esta condicionada por la primera que explicitamente requiere la peticion por GET. hasta donde alcanza mi conocimiento, no se puede tener dos metodos en una misma peticion. esto por un lado...

ahora bien, ¿por que tampoco funciona aun siendo la peticion por GET? porque en la peticion AJAX no estas enviando el valor parametro correctamente. fijate que estas enviando el valor en el metodo send el cual, hasta donde tengo entendido, no se utiliza cuando el metodo es GET. o sea, ese valor tienes que enviarlo por la url. en otras palabras, donde tienes ?ajax=true.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 29/08/2010, 08:33
Avatar de totote  
Fecha de Ingreso: diciembre-2006
Mensajes: 61
Antigüedad: 18 años
Puntos: 0
Respuesta: PHP no recibe parametros por post

Hola Zerokilled, primero gracias por contestar. Resulta que como no andaba con método POST lo cambie a método GET y me olvide de volverlo a POST. Con respecto a usar los dos métodos juntos, si es posible por lo menos es un viejo truco q utilizo en donde genero la URL con php para pasar parámetros por GET y en un form le especifíco que es de método POST y envío por los dos métodos. Con respecto a Ajax=true es otro truco q uso ya que como llamo al mismo script, utilizo valores por GET para Ejecutar cierta parte del código. En este caso, si Ajax no tiene valor quiere decir que se está ejecutando el script normal, pero si ajax tiene un valor quiere decir que el scrip esta siendo ejecutado por el ajax entonces ejecuto solamente la parte del if que pregunta por ajax para retornar un valor. El problema es que el $_REQUEST solamente obtiene el valor ajax=true. mi pregunta es porque los datos que envío en el send no los recibo del otro lado.

Saludos!
  #4 (permalink)  
Antiguo 29/08/2010, 14:24
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: PHP no recibe parametros por post

luego de haberte respondido estuve realizando varias pruebas con formularios y ajax. eventualmente php puede recibir la informacion informacion por GET cuando se envia por POST. por lo que no te funciona por post con ajax es porque tienes que indicar el header content type en la peticion ajax. cuando no se le indica el content-type a la peticion ajax, este se envia con el valor application/xml.
Código:
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
por otro lado en la siguiente linea de php tienes error, echo "El valor es: " + $id;. para concatenar cadenas se utiliza el operador punto (.).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 29/08/2010, 14:54
Avatar de totote  
Fecha de Ingreso: diciembre-2006
Mensajes: 61
Antigüedad: 18 años
Puntos: 0
Respuesta: PHP no recibe parametros por post

zerokilled nuevamente, gracias por tu respuesta. Tienes mucha razón me estaba faltando indecarle el request header, ahí funcionó perfectamente. Y con respecto a concatenar con punto, por lo general lo hago pero esta vez no se que me pasó jaja.

De nuevo muchas gracias por tu respuesta. Saludos!

Etiquetas: ajax, parametros, php, post
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 09:06.