Loading



 
Calificación:
  • 1 votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Cómo leer un POST en un action invocado desde jQuery Ajax
10-07-2012, 03:50 PM
Mensaje: #1
Cómo leer un POST en un action invocado desde jQuery Ajax

Este es un pequeño y simple ejemplo de uso de json jquery y ajax para enviar y recibir datos a un action de yii:


Este action sera invocado usando jQuery desde algun script en alguna parte de tu website, cuando lo invocas puedes pasar datos via post hacia tu action, y luego para recibirlos en el action haces:

Código PHP:
public function actionPrueba(){
   
$post_text trim(file_get_contents('php://input'));
   
$objeto CJSON::decode($post_text);

   
// si quieres enviar texto puro:

   
echo "el numero es: ".$objeto['numero']
      .
" palabra es: ".$objeto['palabra'];

   
// si quieres enviar un objeto usando JSON:
  /*
      header("Content-type: application/json");
      $objeto = new Usuario();
      $objeto->nombre = "pedro perez";
      echo CJSON::encode($objeto);
  */

  // si ocurre un error reportalo asi: 
  // throw new Exception("algo salio mal",500);


por ejemplo, desde algun script puedes enviar datos via POST al action mencionado arriba, asi:


Código:
<script>
function prueba() {
jQuery.ajax({
    url: "index.php?r=site/prueba",
    type: 'post',
    async: false,
        contentType: "application/json",
    data: "{numero: 123, palabra: 'el perrito'}",
    success: function(data, textStatus, jqXHR){
            // llamado cuando el action responde con un echo
            // aqui "data" sera lo que tu hayas enviado desde el action
            // puede ser json o texto simple,
            // si es texto simple puedes hacer:
            // alert(data);
            // si es json puedes hacer:
            // alert(data.nombre);
        },
    error: function(jqXHR, textStatus, errorThrown){
           // llamado cuando el action emite una excepcion
           //
           alert(jqXHR.responseText);
        },
});
}

// enviar datos:
prueba();

</script>




QUOTE
13-04-2013, 12:58 AM
Mensaje: #2
Triste RE: Cómo leer un POST en un action invocado desde jQuery Ajax

buenas amigo, tengo una duda... mi data la envio asi


jQuery.ajax({
url: 'index.php?r=reservas/prueba',
type: 'post',
async: false,
dataType: 'json',
data: {
title: title,
sala : '$sala',
}


y lo recibo como indicabas en tu publicacion
...
post_text = trim(file_get_contents('php://input'));
$objeto = CJSON::decode($post_text);


al imprimir $objeto no tengo nada en la variable...


sabes a que se debe?? alguna idea?

QUOTE
19-07-2013, 01:14 PM
Mensaje: #3
RE: Cómo leer un POST en un action invocado desde jQuery Ajax

$data si viene de un form debería serializarse

QUOTE
19-07-2013, 01:21 PM (Este mensaje fue modificado por última vez en: 19-07-2013 01:23 PM por bluyell.)
Mensaje: #4
RE: Cómo leer un POST en un action invocado desde jQuery Ajax

no siempre, depende de que traiga consigo. En el caso de este ejemplo data viaja en forma JSON, lo cual es un equivalente de serialización aún mas estandar y mejor reconocido que el uso de serialize(), el cual no es estandar en todos los tipos de OS o software que lo soporten, JSON si.




QUOTE
15-08-2013, 07:38 PM (Este mensaje fue modificado por última vez en: 16-08-2013 09:53 AM por juankamilo.)
Mensaje: #5
RE: Cómo leer un POST en un action invocado desde jQuery Ajax

Como estan yo lo hago un poco distinto a ver que tal les parece
La funcion Ajax


Código PHP:
function prueba() {
    
    
jQuery.ajax({
        
url'index.php?r=site/test',
        
data: {idvalor},
        
type'post',
        
dataType'json',
        
success: function(data) { allIncl(data);}                                                
      });
      
       function 
allIncl(data) {
                                    
                $.
each(data, function(keyval) {

                        if(
val==1){
                            
//algo
                        
}
                  });
            }
   
}

// enviar datos:
prueba(); 


y en el controlador

Código PHP:
public function actionTest(){
            
header("Content-type: application/json");
            
$mymodelo Mymodelo::model()->findAll('con_id=:id',array(':id'=>$_POST['id']));
           
            foreach (
$mymodelo as $key => $value) {
                
$var[$key] = $value->id_tipo_tarifa;
            }
            echo 
CJSON::encode($var);
 } 

QUOTE


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  Como subir una imagen, y guardar el path en la base de datos oscarvogel 6 5,497 25-08-2014 01:42 PM
Último mensaje: Luc1fer
  Cómo crear un componente. bluyell 7 7,379 10-05-2014 06:45 AM
Último mensaje: i.am.zeugor
  Como usar un CListView bluyell 1 4,101 15-07-2013 08:09 PM
Último mensaje: cleimak
  Leer algun atributo de una fila con $data en un CGridView desde un CButtonColumn bluyell 3 3,160 06-03-2013 02:01 PM
Último mensaje: Laura
  Cómo hacer un Widget en Yii bluyell 1 2,789 12-11-2012 05:22 PM
Último mensaje: carlos_belisario
  Usando Ajax en Yii, Facil bluyell 4 14,389 05-11-2012 08:18 PM
Último mensaje: juankamilo
  Acceder a las columnas de un CGridView usando jQuery bluyell 0 2,175 03-10-2012 05:41 PM
Último mensaje: bluyell
  Cómo insertar el script de jquery en yii bluyell 4 8,863 03-10-2012 05:49 AM
Último mensaje: rmenor
Sonrisa Cómo agregar un Favicon en el website. pio 1 2,765 16-08-2012 12:42 AM
Último mensaje: dampchivas
Información Cómo usar dos botones de Submit en el mismo Formulario bluyell 0 6,450 11-07-2012 07:39 PM
Último mensaje: bluyell

Salto de foro:


Usuario(s) navegando en este tema: 2 invitado(s)

Contáctanos | Yii Framework en Español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS