Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] validacion de campos usando ajax jquery

Estas en el tema de validacion de campos usando ajax jquery en el foro de PHP en Foros del Web. Bueno buenas mi gran duda en este momento estoy usando cakephp framework y la verdad tengo que hacer unas validaciones usando específicamente jquery con ajax ...
  #1 (permalink)  
Antiguo 10/06/2014, 14:24
 
Fecha de Ingreso: septiembre-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta validacion de campos usando ajax jquery


Bueno buenas mi gran duda en este momento estoy usando cakephp framework y la verdad tengo que hacer unas validaciones usando específicamente jquery con ajax o solo jquery el problema es que estoy teniendo muchos errore y problemas al aplicarlo ya que hay errores que no me dejan avanzar.


este es mi view


Código PHP:
<?php echo $this->Html->script('validation'FALSE); ?>

<div class="actions">
<h3>Acciones</h3>
<ul>
<li><?php echo $this->Html->link"Agregar Proveedor",   array('action'=>'proveedor') ); ?></li>
</ul>
<ul>
<li><?php echo $this->Html->link"Volver Atras",   array('action'=>'index') ); ?></li>
</ul>
<ul>
<li><?php 
if($this->Session->check('Auth.User')){

echo 
$this->Html->link"Cerrar Sesión",   array('action'=>'logout') ); 
}else{
echo 
$this->Html->link"Regresar al login de usuarios",   array('action'=>'login') ); 
}
?></li>
</ul>
</div>
<div  id="success"></div>
  <div class="form" >
  <h3>Registro de Compra de Grano </h3>
  <?php echo $this->Form->create('SoyaProductorCompra');?>
      <fieldset>
          <?php 
         
// echo $this->Form->input('soya_proveedor_id', array( 'options' => $soyaproveedores,'empty' => '--Porfavor Seleccione Proveedor--','label' => 'Por Favor Seleccione a algun Proveedor de la lista' ));
          
echo $this->Form->input('proveedor_carnet', array('label' => 'Cantidad en tonelada(s) métrica(s) del producto  (TM)''id'=>'proveedor_carnet'));

          echo 
$this->Form->input('producto', array(
              
'options' => array( 
                  
'GRANO DE SOYA' => 'Grano de Soya',
                  
'GRANO DE GIRASOL' => 'Grano de Girasol'
                  
), 'label'=>'Tipo de Grano'
          
));
          
          echo 
$this->Form->input('toneladas', array('label' => 'Cantidad en tonelada(s) métrica(s) del producto  (TM)''id'=>'toneladas'));
          echo 
$this->Form->input('preciodolar', array(
              
'label' => 'Precio en Dolares Americanos por tonelada métrica (TM / $us)'));
          echo 
$this->Form->input('total', array('label' => 'Total en Dolares Americanos ($us)''default'=>0));
          echo 
$this->Form->input('nrofactura', array('label' => 'Numero Factura','id'=>'total'));        
      
?>

      <div id="sending" style="display:none;">
          <?php echo $this->html->image('ajax-loader.gif', array('alt' => 'Cargando...')); ?>
      </div>

      <?php
          
echo $this->Js->submit('Agregar Existencia', array(
            
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
            
'success'=>$this->Js->get('#sending')->effect('fadeOut'),
            
'update'=>'#success'
            
)); 
      
?>              
      </fieldset>
  <?php echo $this->Form->end(); ?>
  </div>

Bueno ahora entrando a lo que es el controlador tengo lo siguiente:

Código PHP:
 <?php
App
::import('Vendor''excel_reader2'); 
    class 
SoyaproductorcomprasController extends AppController {
        public 
$components = array('Session','RequestHandler');
        public 
$helpers = array('Html''Form''Js');
        public function 
add()
        {
            
$this->loadModel('SoyaProductorCompra');
            
$this->loadModel('SoyaProveedor');
            
$this->loadModel('Productora');
            
$this->set('productores'$this->Productora->find('first', array('conditions' => array('user_id' =>  $this->Auth->user('id')))));
            
$this->set('soyaproveedores'$this->SoyaProveedor->find('list', array(
                
'fields' => array('id''nombre')
            )));
            if (
$this->request->is('post')) {
            
$this->request->data['SoyaProductorCompra']['user_id'] = $this->Auth->user('id');
            
$this->request->data['SoyaProductorCompra']['soya_proveedor_id'] = $this->request->data['SoyaProductorCompra']['proveedor_carnet'];
                    if (
$this->SoyaProductorCompra->save($this->data)) {
                        if(
$this->RequestHandler->isAjax()) {
                            
$this->render('success''ajax');
                        }else{
                            
$this->Session->setFlash(__('La Información no fue Guardada.'));  
                            return 
$this->redirect(array('action' => 'index'));
                        }
                    }
                }
        }
        public function 
validate_form(){
            
$this->loadModel('SoyaProductorCompra');
            
$this->log("validacion que paso?");
            if (
$this->RequestHandler->isAjax()) {
                
debug($this->params['form']['field']);
                
$this->data['SoyaProductorCompra'][$this->params['form']['field']]=$this->params['form']['value'];
                
$this->SoyaProductorCompra->set($this->data);
                if(
$this->SoyaProductorCompra->validate()){
                    
$this->autoRender FALSE;
                }else{
                    
$error=$this->validateErrors($this->SoyaProductorCompra);
                    
$this->set('error'$error[$this->params['form']['field']]);
                }
            }
        }
}


seguidamente el jquery

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $('#proveedor_carnet').blur(function(){
  3.         $.post('http://localhost:8080/cake/soyaproductorcompras/validate_form/',
  4.             { field: $('#proveedor_carnet').attr('id'), value: $('#proveedor_carnet').val() },
  5.             handleNmeValidation
  6.             );
  7.     });
  8.     function handleNmeValidation(error){
  9.         if(error.length > 0){
  10.             if($('#proveedor_carnet-notempty').length === 0){
  11.                 $('#proveedor_carnet').after('<div id="proveedor_carnet-notEmpty" class="error-message">' + error + '</div>');
  12.             }
  13.         }else{
  14.             $('#proveedor_carnet-notEmpty').remove();
  15.         }
  16.     }
  17. });

los mensajes de error y success.

validate form

Código PHP:
<?php 
echo $error;

success.ctp
Código PHP:
<p style="background-color: lightgreen"Guardado con Exito</p

el error

Código:
POST http://localhost:8080/cake/soyaproductorcompras/validate_form/ 403 (Forbidden) jquery.js:9666
jQuery.ajaxTransport.send jquery.js:9666
jQuery.extend.ajax jquery.js:9211
jQuery.each.jQuery.(anonymous function) jquery.js:9357
(anonymous function) validation.js:3
jQuery.event.dispatch jquery.js:4624
jQuery.event.add.elemData.handle
  #2 (permalink)  
Antiguo 10/06/2014, 15:29
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: validacion de campos usando ajax jquery

Si te marca ese error es por que no encuentra la ruta. Lo que puedes intentar es proporcionarla como debe de ser:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     var route = '<?php echo Router::Url(array('controller' => 'soyaproductorcompras','action' => 'validate_form'));?>'
  3.     $('#proveedor_carnet').blur(function(){
  4.         $.post(route,{ field: $('#proveedor_carnet').attr('id'), value: $('#proveedor_carnet').val() },
  5.         handleNmeValidation
  6.     );
  7. });
  8.  
  9. function handleNmeValidation(error){
  10.     if(error.length > 0){
  11.         if($('#proveedor_carnet-notempty').length === 0){
  12.             $('#proveedor_carnet').after('<div id="proveedor_carnet-notEmpty" class="error-message">' + error + '</div>');
  13.         }
  14.     }else{
  15.             $('#proveedor_carnet-notEmpty').remove();
  16.         }
  17.     }
  18. });
Tambien recuerda registrar la ruta en app/Config/routes.php, mas detalles en: http://book.cakephp.org/2.0/en/devel...-configuration
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 10/06/2014, 15:55
 
Fecha de Ingreso: septiembre-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: validacion de campos usando ajax jquery

si intente lo que me dijiste y me sigue dando el mismo error pero no se si esta es la forma correcta de registrar la ruta:

Código PHP:
Router::connect('/', array('controller' => 'soyaproductorcompras','action' => 'validate_form')); 
  #4 (permalink)  
Antiguo 10/06/2014, 16:12
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: validacion de campos usando ajax jquery

Si, se supone que es la forma correcta. Igual puede ser la convencion en los nombres. Echale un vistazo a : http://book.cakephp.org/2.0/en/getti...nventions.html
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 10/06/2014, 16:23
 
Fecha de Ingreso: septiembre-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: validacion de campos usando ajax jquery

gracias ya lo solucione ahora tengo que lidiar con otro problema pero me ayudo lo que me dijiste.

Etiquetas: ajax, cakephp, jquery
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 06:42.