Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2014, 14:24
Widrogo
 
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