Foros del Web » Programando para Internet » PHP »

Problema con la respuesta en un formulario jquery

Estas en el tema de Problema con la respuesta en un formulario jquery en el foro de PHP en Foros del Web. Buenas gente, tengo un problema del cual no me doy cuenta cual es, tengo hecho un formulario (antes que nada decir que recien empiezo con ...
  #1 (permalink)  
Antiguo 01/12/2012, 07:45
 
Fecha de Ingreso: abril-2012
Mensajes: 36
Antigüedad: 12 años
Puntos: 1
Problema con la respuesta en un formulario jquery

Buenas gente, tengo un problema del cual no me doy cuenta cual es, tengo hecho un formulario (antes que nada decir que recien empiezo con ajax), en el cual le paso ciertos valores y los guarda en una tabla. Los inserta bien en la tabla, la operacion sale bien, pero en la respuesta no me vuelve a habilitar el boton y tampoco desaparece el gif de cargando. Diganme que puede ser. Aclaro que si dejo algun campo vacio si hace lo que tiene que hacer, pero con los datos OK no.

form.altaproducto.php

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Nuevo producto</title>
  5. <link href="../css/redmond/jquery-ui-1.9.2.custom.css" rel="stylesheet">
  6.     <script src="../js/jquery-1.8.3.js"></script>
  7.     <script src="../js/jquery-ui-1.9.2.custom.js"></script>
  8.      <script src="../js/jquery.form.js"></script>
  9.      <script>
  10.      $(function(){
  11.         $("#guardar").button();
  12.         $("#msj").hide();
  13.         $("#cargado").hide();
  14.         $("#dialogo").hide();
  15.         $('#producto').focus();
  16.        
  17.        
  18.         var options = {    
  19.         beforeSubmit:  antesdeenviar,  
  20.         success:       respuesta,  
  21.         dataType:  'json'    
  22.         };
  23.        
  24.         $('#frmproductos').ajaxForm(options);
  25.      });
  26.      
  27.      function antesdeenviar(){
  28.         $('#cargado').show();
  29.         $('#guardar').button("disable");   
  30.     }
  31.    
  32.     function respuesta(datos){
  33.         $("#cargado").hide();
  34.         if(datos.op=='OK'){
  35.                 $("#msj").html("Producto nuevo guardado exitosamente");
  36.                 $("#msj").addClass("ui-state-highlight");
  37.                 $("#msj").show("slow").delay(2000).hide("slow");
  38.             }else{
  39.                 var mensaje="Completa los campos resaltados";
  40.                 $.each(datos.error,function(item,valor){ //Tomar un elemento del json y hacer uso. pasar 2 parametros, coleccion de datos
  41.                         $('#'+valor).addClass("ui-state-error");
  42.                 });
  43.                
  44.                 $("#dialogo").html(mensaje);
  45.                 $("#dialogo").show('slow').delay(2000).hide('slow');   
  46.             }
  47.         $('#guardar').button("enable");
  48.     }
  49.      
  50.     </script>
  51. </head>
  52.  
  53.  
  54. <div align="center" style=" width:530px;background-color:#09F; color:#FFFFFF">Nuevo producto</div>
  55. <form id="frmproductos" name="frmproductos" method="post" action="accion.altaproducto.php">
  56.     <tr>
  57.         <td><label for="producto">Producto</label></td>
  58.         <td colspan="3"><input name="producto" type="text" id="producto" size="37" /></td>
  59.     </tr>
  60.     <tr>
  61.         <td><label for="descripcion">Descripcion</label></td>
  62.         <td><textarea name="descripcion" id="descripcion" cols="45" rows="5"></textarea></td>
  63.         <td><label for="costo">Costo</label></td>
  64.         <td><input name="costo" type="text" id="costo" size="10" /></td>
  65.     </tr>
  66.     <tr>
  67.         <td><label for="categoria">Categoria</label></td>
  68.         <td><select name="categoria" id="categoria">
  69.       <option selected="selected">Hardware</option>
  70.       <option>Software</option>
  71.       <option>Insumos</option>
  72.       <option>Accesorios</option>
  73.       <option>Servicio Tecnico</option>
  74.     </select></td>
  75.         <td><label for="precioa">Precio A</label><br /><label for="preciob">Precio B</label><br /><label for="precioc">Precio C</label></td>
  76.       <td><input name="precioa" type="text" id="precioa" size="10" /><br /><input name="preciob" type="text" id="preciob" size="10" /><br /><input name="precioc" type="text" id="precioc" size="10" /></td>
  77.     </tr>
  78.     <tr>
  79.         <td><label for="marca">Marca</label></td>
  80.         <td colspan="3"><input type="text" name="marca" id="marca" /></td>
  81.     </tr>
  82.     <tr>
  83.     <td colspan="4" align="center"><input type="submit" name="guardar" id="guardar" value="Guardar" /></td>
  84.     <td><span id="cargado"><img src="../images/load.gif" /></span></td></tr>
  85.     </form>
  86. <div id="msj"></div>
  87. <span id="dialogo" class="ui-state-error ui-corner-all"></span>
  88. </body>
  89. </html>

accion.altaproducto.php

Código PHP:
Ver original
  1. <?php
  2. include "class.productos.php";
  3. sleep(1);
  4. $datos=array();
  5.  
  6. $producto=$_POST['producto'];
  7. $descripcion=$_POST['descripcion'];
  8. $categoria=$_POST['categoria'];
  9. $marca=$_POST['marca'];
  10. $costo=$_POST['costo'];
  11. $precioa=$_POST['precioa'];
  12. $preciob=$_POST['preciob'];
  13. $precioc=$_POST['precioc'];
  14.  
  15.     //validacion de que no vengan vacios
  16.     if(strlen($producto)==0){
  17.         $datos['error'][]='producto';
  18.     }
  19.     if(strlen($descripcion)==0){
  20.         $datos['error'][]='descripcion';
  21.     }
  22.     if(strlen($categoria)==0){
  23.         $datos['error'][]='categoria';
  24.     }
  25.     if(strlen($marca)==0){
  26.         $datos['error'][]='marca';
  27.     }
  28.     if(strlen($costo)==0){
  29.         $datos['error'][]='costo';
  30.     }
  31.     if(strlen($precioa)==0){
  32.         $datos['error'][]='precioa';
  33.     }
  34.     if(strlen($preciob)==0){
  35.         $datos['error'][]='preciob';
  36.     }
  37.     if(strlen($precioc)==0){
  38.         $datos['error'][]='precioc';
  39.     }
  40.    
  41.     //contamos los errores almacenados en $datos
  42.     if(count($datos['error'])==0){
  43.         $clase=new productos;
  44.         if($cod=$clase->nuevoproducto($producto,$descripcion,$categoria,$marca,$costo,$precioa,$preciob,$precioc)){
  45.             $datos['id']=$cod;
  46.             $datos['op']='OK';
  47.         }else{
  48.             $datos['op']='ERRORDATOS';
  49.         }
  50.     }else{
  51.         $datos['op']='ERROR';
  52.     }
  53.     echo json_encode($datos);
  54. ?>

class.productos.php

Código PHP:
Ver original
  1. <?php
  2.  
  3.     class productos{
  4.        
  5.             //Creo las variables a utilizar
  6.         private $id_producto="";
  7.         private $producto="";
  8.         private $descripcion="";
  9.         private $categoria="";
  10.         private $marca="";
  11.         private $costo="";
  12.         private $precioa="";
  13.         private $preciob="";
  14.         private $precioc="";
  15.         private $stock="";
  16.            
  17.             //Creo la funcion constructora que conecta a la base
  18.         function __construct(){
  19.             $this->conexion=mysql_connect("localhost","root","");
  20.             mysql_select_db("yamipc",$this->conexion);
  21.         }
  22.        
  23.             //Setters y Getters
  24.         //id_producto
  25.         public function set_id_producto($valor=""){
  26.             $this->id_producto=$valor;
  27.         }
  28.         public function get_id_producto(){
  29.             return $this->id_producto;
  30.         }
  31.         //producto
  32.         public function set_producto($valor=""){
  33.             $this->producto=$valor;
  34.         }
  35.         public function get_producto(){
  36.             return $this->producto;
  37.         }
  38.         //descripcion
  39.         public function set_descripcion($valor=""){
  40.             $this->descripcion=$valor;
  41.         }
  42.         public function get_descripcion(){
  43.             return $this->descripcion;
  44.         }
  45.         //categoria
  46.         public function set_categoria($valor=""){
  47.             $this->categoria=$valor;
  48.         }
  49.         public function get_categoria(){
  50.             return $this->categoria;
  51.         }
  52.         //marca
  53.         public function set_marca($valor=""){
  54.             $this->marca=$valor;
  55.         }
  56.         public function get_marca(){
  57.             return $this->marca;
  58.         }
  59.         //costo
  60.         public function set_costo($valor=""){
  61.             $this->costo=$valor;
  62.         }
  63.         public function get_costo(){
  64.             return $this->costo;
  65.         }
  66.         //precio a
  67.         public function set_precioa($valor=""){
  68.             $this->precioa=$valor;
  69.         }
  70.         public function get_precioa(){
  71.             return $this->precioa;
  72.         }
  73.         //precio b
  74.         public function set_preciob($valor=""){
  75.             $this->preciob=$valor;
  76.         }
  77.         public function get_preciob(){
  78.             return $this->preciob;
  79.         }
  80.         //precio c
  81.         public function set_precioc($valor=""){
  82.             $this->precioc=$valor;
  83.         }
  84.         public function get_precioc(){
  85.             return $this->precioc;
  86.         }
  87.         //stock
  88.         public function set_stock($valor=""){
  89.             $this->stock=$valor;
  90.         }
  91.         public function get_stock(){
  92.             return $this->stock;
  93.         }
  94.        
  95.             //Funcion que prepara para guardar nuevo producto
  96.         public function nuevoproducto($producto="",$descripcion="",$categoria="",$marca="",$costo="",$precioa="",$preciob="",$precioc=""){
  97.             $this->set_producto($producto);
  98.             $this->set_descripcion($descripcion);
  99.             $this->set_categoria($categoria);
  100.             $this->set_marca($marca);
  101.             $this->set_costo($costo);
  102.             $this->set_precioa($precioa);
  103.             $this->set_preciob($preciob);
  104.             $this->set_precioc($precioc);
  105.             if($this->guardar()){
  106.                 return $this->get_id_producto();       
  107.             }else{
  108.                 return false;
  109.             }
  110.         }
  111.        
  112.             //Funcion que guarda en la tabla el nuevo producto
  113.         public function guardar(){
  114.         if($this->get_id_producto()==""){
  115.             $sql =sprintf("INSERT INTO productos(producto,descripcion,categoria,marca,costo,precioa,preciob,precioc) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s');",$this->get_producto(),$this->get_descripcion(),$this->get_categoria(),$this->get_marca(),$this->get_costo(),$this->get_precioa(),$this->get_preciob(),$this->get_precioc());
  116.             if(mysql_query($sql)){
  117.                     $this->set_id_producto(mysql_insert_id($this->conexion));
  118.                     return $this->get_id_producto();
  119.                 }else{
  120.                     return false;
  121.                 }
  122.        
  123.         }else{
  124.             $sql=sprintf("SELECT id_producto FROM productos WHERE id_producto=%d",$this->get_id_producto());
  125.             $datos=mysql_query($sql);
  126.             if(mysql_num_rows($datos)){
  127.                 $sql=sprintf("UPDATE productos SET producto='%s',descripcion='%s',categoria='%s',marca='%s',costo='%s',precioa='%s',preciob='%s',precioc='%s' WHERE id_producto=%d",$this->get_producto(),$this->get_descripcion(),$this->get_categoria(),$this->get_marca(),$this->get_costo(),$this->get_precioa(),$this->get_preciob(),$this->get_precioc());
  128.                 if(mysql_query($sql)){
  129.                     return $this->get_id_producto();
  130.                 }else{
  131.                     return false;
  132.                 }
  133.             }else{
  134.                 $this->set_id_producto("");
  135.                 $this->guardar();
  136.             }
  137.         }
  138.     }
  139.        
  140.             //Creo la funcion destructora que desconecta de la base
  141.         function __destruct(){
  142.             mysql_close($this->conexion);
  143.         }
  144.     }
  145.  
  146. ?>

Gracias! Para que no lean todo el problema creo que lo tengo en el formulario, en la parte de ajax
  #2 (permalink)  
Antiguo 01/12/2012, 08:21
 
Fecha de Ingreso: abril-2012
Mensajes: 36
Antigüedad: 12 años
Puntos: 1
Respuesta: Problema con la respuesta en un formulario jquery

Bueno solucionado, es un tema de notificaciones, ademas de traerme los datos en OK me traia una notificacion sin importancia pero al fin, eso era lo que entraba en conflicto, lo que hice fue deshabilitar las notificaciones y listo.

La tutorial que segui fue esta

Saludos!

Etiquetas: formulario, html, jquery, mysql, respuesta, sql, tabla, variables
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 15:26.