Foros del Web » Programando para Internet » Jquery »

Actualizar DOM en jquery

Estas en el tema de Actualizar DOM en jquery en el foro de Jquery en Foros del Web. Estoy haciendo una aplicación en jquery y tengo bastantes problemas con que el DOM queda obsoleto. Por ejemplo intento cargar un select con el contenido ...
  #1 (permalink)  
Antiguo 20/04/2013, 12:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Actualizar DOM en jquery

Estoy haciendo una aplicación en jquery y tengo bastantes problemas con que el DOM queda obsoleto.

Por ejemplo intento cargar un select con el contenido de una base de datos. La opción que está seleccionada por defecto es un parámetro para rellenar una tabla (con AJAX y PHP).

El problema es que la tabla no se carga porque busco el valor
Código:
$('select).val();
devuelve NULL porque no se ha actualizado el DOM ya que se ha enviado contenido dinámico a través de AJAX.
Qué puedo hacer?

Gracias.
  #2 (permalink)  
Antiguo 20/04/2013, 12:43
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Actualizar DOM en jquery

mira, intenta explicar un poco mejor tu problema, de todos modos, obten en valor de el select, luego de insertar el nuevo codigo en el texto.

y el codigo que has dado tiene un error de sintaxis, me imagino que querras haber escrito
Código Javascript:
Ver original
  1. $('select').val();

un saludo
  #3 (permalink)  
Antiguo 20/04/2013, 17:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Actualizar DOM en jquery

DOM obsoleto? vaya definición.
Creo con que corrijas la sintáxis como indicó @chwc te va a bastar

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 21/04/2013, 04:52
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Actualizar DOM en jquery

Disculpas por ta terminología. No es un problema de sintaxis puesto que no he puesto código literal.
A ver si me explico bien. Cuando cargas una página se genera el DOM al que puedes acceder con javascript como si fuera un documento XML. Si tengo una estructura tipo:

Código:
<table id="tabla"><tbody></tbody></table>
Y mediante AJAX inyecto código HTML, como por ejemplo:
Código:
<tr id="id">Lo que sea</tr>
Este nuevo elemento no es accesible a través de javascript porque la estructura del DOM ha cambiado. Me equivoco?

Ese es mi problema. Se puede "refrescar" para que la estructura del DOM se actualice? Cómo puedo acceder a este nuevo elemento?

Saludos.

Última edición por valisjan; 21/04/2013 a las 05:02
  #5 (permalink)  
Antiguo 21/04/2013, 06:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Actualizar DOM en jquery

Claro que puedes acceder al nuevo elemento, el DOM es dinámico, no estático.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 21/04/2013, 06:37
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Actualizar DOM en jquery

Pues algo debo estar haciendo mal porque estoy intentando lo siguiente y no puedo:
Código HTML:
<div class="row">
            <div class="span3">
                <label>Tria un curs acadèmic</label>
                <select class="span2" id="any"></select>
            </div>
            <div class="span3">
                <label>Tria un grup</label>
                <select class="span1" id="grup"></select>
            </div>
            <div class="span3">
                <label>Tria un curs acadèmic</label>
                <select class="span2" id="any2"></select>
            </div>
            <div class="span3">
                <label>Tria un grup</label>
                <select class="span1" id="grup2"></select>
            </div>
        </div>
        <div class="span3">
                <select size="15" id="singrupo" class="span5" multiple="multiple"</select>
        </div> 
Código:
var any = $('#any').val();
		var any2 = $('#any2').val();
		var nom = $('#buscar').val();
		var grup = $('#grup').val();
		var grup2 = $('#grup2').val();
		$.ajax({
			beforeSend: function(){
				$('#estatus').show();
			},
			url: 'includes/funciones_edit.inc.php',
			type: 'get',
			data: {accion:'alumnosSinGrupo', id:any, nom:nom, grup:grup, id2:any2, grup2:grup2},
			success: function(resp){
				if (resp == 'error') {
					$('#msg').html('Error');
				} else {
					$('#singrupo').html(resp);
					alert(resp);
				}
			},
			error: function(jqXHR, estado, error){
					$('#msg').html(error);
				},
			complete: function (jqXHR, estado){
				$('#estatus').hide();
			} 
		});
Código PHP:
public function alumnosSinGrupo($id$nom$grup$id2$grup2){
            
$sql "SELECT alumne.id_alumne id, nom valor FROM alumne_curs a
                    INNER JOIN alumne ON a.id_alume = alumne.id_alumne
                    WHERE NOT EXISTS (SELECT NULL FROM alumne_curs a1 WHERE a.id_alume = a1.id_alume AND id_any = $id2)
                    AND a.id_any = $id AND a.id_grup = $grup
                    ORDER BY nom ASC"
;
            
$this->listaOpciones($sql);
 }

private function 
listaOpciones($sql){
            
$resp mysql_query($sql) or die(mysql_error());
            while (
$reg mysql_fetch_assoc($resp)) {
                echo 
'<option value='.$reg['id'].'>'.$reg['valor'].'</option>';
            }
        } 
Lo que he puesto arriba es un extracto de todo el código. Lo que intenta es cargar los selects con contenido dinámico y dependiendo del contenido seleccionado de éstos se carga un último select multiple.

Hay muchas veces que las variables que guardan el valor de los select me devuelven ''
Pasa sobretodo cuando tarda un poco en responder o la primera vez que se carga la página.

Alguna solución para eso?

Gracias.
  #7 (permalink)  
Antiguo 21/04/2013, 17:29
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Actualizar DOM en jquery

realmente ni entiendo el problema y menos tu código, eso tal cual está va a poner algún option (suponiendo que la consulta arroje resultados) en el select se id="singrupo", el resto de tus select van a permanecer sin contenido. Tampoco veo evento alguno asociado a los selects any,any2,grup,grup2

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: ajax, dom, javascript, php, select
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 19:35.