Tengo un pequeño problemilla. Estoy utilizado tiny_mce para convertir los textarea en pequeños editores de texto.. siempre me ha funcionado sin problemas con el tradiccional envio de formularios.. ahora que entrado en el apasionante mundo de Ajax, me surge el problema de que al enviar los datos del formulario al php que los procesa e inserta en la bese de datos, el campo descripción que es el nombre del campo que tiene asignado el textarea se me pasa vacio.. (por lo menos la primera vez, ya que si sigo pulsando el botón de submmit del formulario, la 2 vez si me inserta otro registro con el campo descripción cubierto perfectamente, a no ser que lo haya modificado que en cuyo caso me introduciría el anterior.)
Tegno que decir que el resto de campos me los pasa perfectamente y con su correspondiente valor he provado con el método POST y con GET y me pasa absolutamente lo mismo. Con un textarea normal tambien funciona perfectamente.
No se si alguien le ha pasado algo parecido o si podéis echarme un cable.
Ajax utilizando jquery
Código Javascript:
Ver original
$(document).ready(function(){ // Interceptamos el evento submit $('#formulario').submit(function(event) { event.preventDefault(); var url = $(this).attr('action'); var datos = $(this).serialize(); $.post(url, datos, function(resultado) { $('#message').css('display','block'); $('#message').html(resultado); }); }); });
Formulario
Código HTML:
Ver original
<form id="formulario" action="funciones/datos_productos.php" method="post" enctype="multipart/form-data" name="formulario"> <input type='hidden' name='MAX_FILE_SIZE' value='3500000'> <input type='hidden' name='opcion' value='alta'> <input id="campo_precio" type='text' name='pvp' class="number" value="0"> <input id="campo_precio1" type='text' name='pvp1' class="number" value="0"> <input id="campo_precio2" type='text' name='pvp2' class="number" value="0"> <input id="campo_descuento" type='text' name='descuento' class="number" value="0"> <input type="text" id="foto" value="vacio" name="foto" style="background-color:transparent; border: 0px solid #FFF; margin-bottom:5px; outline: 0px solid #19D1FF; display:none;" class="no-stile" readonly="readonly"> <select name='nombrefamilia' class='seleccion'> </select> <input type="submit" name="login" value="Aceptar" class="botones" id="enviar">
código php para las pruebas:
Código PHP:
Ver original
$opcion=$_POST['opcion']; include("../objects/base_datos.php"); switch ($opcion){ case "alta": $registro= new base_datos; $identificador_familia=$registro->consultar_id_nombre("familias", $_POST['nombrefamilia'], "Id_familia"); $operacion=true; if ($_POST['nombre']==""){$operacion=false; echo "<li class='opeaciones'> Necesitamos el nombre para continuar.</li>";} if(!is_numeric($_POST['pvp'])){$operacion=false; echo "<li class='opeaciones'> El precio debe ser númerico.</li>";} if(!is_numeric($_POST['pvp1'])){$operacion=false; echo "<li class='opeaciones'> El precio debe ser númerico.</li>";} if(!is_numeric($_POST['pvp2'])){$operacion=false; echo "<li class='opeaciones'> El precio debe ser númerico.</li>";} if(!is_numeric($_POST['descuento'])){$operacion=false; echo "<li class='opeaciones'> El descuento debe ser númerico.</li><br>";} if($_POST['foto']==""){$_POST['foto']="vacio";} if($operacion==true){ $datos[0]="0"; $datos[1]=$_POST['nombre']; $datos[2]=$_POST['descripcion']; $datos[3]=$_POST['pvp']; $datos[4]= $_POST['pvp1']; $datos[5]= $_POST['pvp2']; $datos[6]=$_POST['descuento']; $datos[7]=$identificador_familia; $datos[8]=$_POST['foto']; $datos[9]=$_POST['oferta']; $datos[10]=$_POST['visualizar']; echo $registro->insertar_registro($datos,"productos"); } break; }//fin switch }else{ echo "Error."; }//fin isset