Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Envío de varios registros de Tabla por Ajax

Estas en el tema de Envío de varios registros de Tabla por Ajax en el foro de Javascript en Foros del Web. Buenos días, He rellenado una tabla con una consulta ajax mediante un combo seleccionable y a cada celda le he agregado un input con el ...
  #1 (permalink)  
Antiguo 04/05/2013, 05:51
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Envío de varios registros de Tabla por Ajax

Buenos días,

He rellenado una tabla con una consulta ajax mediante un combo seleccionable y a cada celda le he agregado un input con el atributo name="nombreCampo-id" donde nombrecampo es el nombre del atributo a rellenar, y el id es el id del registro a rellenar.

Pero ahora me surge una duda, cómo podría enviar esos datos mediante AJAX ya que hasta ahora sólo había tenido que subir un registro en concreto a mi base de datos, pero ahora necesitaría subir todos los registros de la tabla.

Sobre todo lo veo más complicado atendiendo al atributo data del método post de Ajax.

Si alguien puede guiarme un poco se lo agradecería.

Saludos cordiales.
Francisco J.
  #2 (permalink)  
Antiguo 04/05/2013, 08:35
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años
Puntos: 35
Respuesta: Envío de varios registros de Tabla por Ajax

Bueno para enviar datos por AJAX debes tener conocimientos de varias tecnologías ya que este no es un nuevo lenguaje sino la mezcla de varios.

Te recomiendo poner en google "ajax ya" y entras en la primera página que te sale con que te leas los 5 primeros capítulos detenidamente y pensando ya sabrás hacer esto que quieres (Suponiendo que dominas los lenguajes que componen AJAX).

Saludos.

PD: Si te surge alguna duda preguntame.
  #3 (permalink)  
Antiguo 04/05/2013, 09:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Respuesta: Envío de varios registros de Tabla por Ajax

Muchas gracias alberto, el tema es el siguiente.

Estoy trabajando con el patrón MVC y tengo en uno de los controladores el método (nuevoControl), que a su vez llama a un método en el modelo llamado (nuevoControlUnidad). Desde el controlador le paso los parámetros obtenidos por POST desde la tabla a la función del modelo. Esto ya lo he hecho pero para traer datos de la base de datos y no he tenido problemas.

El asunto viene cuando quiero insertar datos.

En la vista, tengo un fichero de JavaScript en el que tengo la función de ajax que llama al método del controlador, pasándole los parámetros extraídos por POST, recorriendo con JQuery cada fila.

He probado a sacar por consola cada registro y sus atributos y no tengo problemas. El problema viene porque en el depurador de Chrome me alerta de illegal invocation al método de ajax.

¿Podría saber a qué se debe?

Pongo aquí el código que estoy usando.

ProduccionModel.php
Código:
public function nuevoControlUnidad($codigo, $fechaProd,$ausencias,$pendiente,$salida,$medCPROD,$comentario) {
        $nuevoControl = $this->_db->prepare("INSERT INTO produccionUnidad VALUES(:Fkcodigo,:FechaProd, :ausencias, :pendiente, :salidaPROD, :medCertiPROD, :comentario, :fechaEnvio, :fechaModif)")
                ->execute(
                array(
                    ':Fkcodigo' => $codigo,
                    ':FechaProd' => $fechaProd,
                    ':ausencias' => $ausencias,
                    ':pendiente' => $pendiente,
                    ':salidaPROD' => $salida,
                    ':medCPROD' => $medCPROD,
                    ':comentario' => $comentario,
                    ':fechaEnvio' => date("Y-m-d"),
                    ':fechaModif' => date("Y-m-d")
                ));
    }
ProduccionController.php
Código:
public function nuevoControl() {
        $this->_produccion->nuevoControlUnidad(
                $this->getTexto('FKcodigo'),
                $this->getTexto('FechaProd'),
                $this->getInt('ausencias'),
                $this->getInt('pendiente'),
                $this->getTexto('salidaPROD'),
                $this->getFloat('medCPROD'),
                $this->getTexto('comentario')
        );
    }
script.js
Código:
 $("#btnNuevoControl").on('click',function(){
        $("#tablaNuevoControl tr").each(function(){
            $.ajax({
                url: '/unidades/produccion/nuevoControl',
                type: "POST",
                data:{
                    'FKcodigo':$(this).attr('id'),
                    'FechaProd':$("#selectorFecha").val(),
                    'ausencias':parseInt($(this).find('.ausencias').val()),
                    'pendiente':parseInt($(this).find('.pendiente').val()),
                    'salidaPROD':parseInt($(this).find('.salidaPROD')),
                    'medCPROD':parseFloat($(this).find('.medCPROD')).toFixed(2),
                    'comentario':$(this).find('.comentario').val()
                }   ,
                success:function(datos){
                    console.log('Inserción satisfactoria');
                }            
            });
        });
    });
La verdad, debe ser una tontería pero no doy con el asunto.

Gracias de antemano.
Saludos cordiales.
Francisco J.

Última edición por geofran80; 04/05/2013 a las 09:41
  #4 (permalink)  
Antiguo 04/05/2013, 09:45
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años
Puntos: 35
Respuesta: Envío de varios registros de Tabla por Ajax

Cita:
url: '/unidades/produccion/nuevoControl',
Cambia los sitios que esten de esa forma por:

http://www.midominio.com/unidades/produccion/nuevoControl

Yo solo sé que eso suele dar varios problemas. De programación orientada a objetos en PHP aún no la estudié así que ahí no te puedo ayudar, lo siento.

Saludos.
  #5 (permalink)  
Antiguo 04/05/2013, 09:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Respuesta: Envío de varios registros de Tabla por Ajax

Vale, no te preocupes, gracias por intentar ayudarme.

Lo de la dirección URL no debería causar el problema porque las peticiones que hago al servidor usando esas url funcionan, pero la inserción se me está atravesando.

Bueno a ver cómo puedo resolverlo.

A veces la coma, el punto, o las llaves, son la solución pero aunque tenga el error delante llega un momento que lo pasamos por alto.

Gracias nuevamente.

Saludos cordiales.
Francisco J.
  #6 (permalink)  
Antiguo 04/05/2013, 10:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Respuesta: Envío de varios registros de Tabla por Ajax

Por si sirve de pista en la pestaña Network de Google Chrome cuando ejecuta el método de AJAXveo que en STATUS pone (Canceled). Y me redirecciona a la web sin realizar la petición.

Saludos.
Francisco J.
  #7 (permalink)  
Antiguo 04/05/2013, 11:31
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Respuesta: Envío de varios registros de Tabla por Ajax

Al parecer el error estaba en no usar con el evento del submit el preventDefault, ahora sí lo envía los datos.

Gracias de todos modos.

Saludos cordiales.
Francisco J.

Etiquetas: ajax, campo, mysql, registro, registros, tabla
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 17:47.