Foros del Web » Programando para Internet » Jquery »

Agregar comentario con JQUERY

Estas en el tema de Agregar comentario con JQUERY en el foro de Jquery en Foros del Web. Hoa a todos, me estoy "adentrando" en el mundo de JQUERY, se PHP, pero el JQUERY me complica mucho más, haber si me ayudan :D ...
  #1 (permalink)  
Antiguo 12/10/2009, 15:39
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 7
Sonrisa Agregar comentario con JQUERY

Hoa a todos,

me estoy "adentrando" en el mundo de JQUERY, se PHP, pero el JQUERY me complica mucho más, haber si me ayudan :D

Tengo una duda para saber cuál es el código para que agrege un comentario.

Tengo lo siguiente:
El archivo .js
Código:
/*agregar comentario post*/
function add_comment(id, nro){
	if($('#cuerpo_comment').val() == ''){
		$('#cuerpo_comment').focus();
		return;
	}
	$('.msg_add_comment').hide();
	$('#button_add_comment').attr('disabled', 'true');
	$('#gif_cargando_add_comment').css('display', 'block');
	$.ajax({
		type: 'POST',
		url: '/comentario/enviar/',
		data: 'cuerpo_comment=' + encodeURIComponent($('#cuerpo_comment').val()) + '&id=' + id + '&psecion=' + nro,
		success: function(h){
			$('#gif_cargando_add_comment').css('display', 'none');
			if(h.charAt(0)==0){			
				$('.msg_add_comment').html(h.substring(3));
			     	$('.msg_add_comment').addClass('status_error');
					$('.msg_add_comment').show('slow');
					$('#button_add_comment').removeAttr('disabled');
}else if(h.charAt(0)==1){	
					$('#return_agregar_comentario').html(h.substring(3));
					$('#return_agregar_comentario').slideDown('slow', function(){
						$('.agregar_comentario').slideUp('slow');
					});
					if($('#no_comentarios'))
					$('#no_comentarios').slideUp('slow');}					
		},
		error: function(){
			$('#gif_cargando_add_comment').css('display', 'none');
			$('.msg_add_comment').html('Error al intentar procesar lo solicitado');
			$('.msg_add_comment').show('slow');
			$('#button_add_comment').removeAttr('disabled');
		}
	});
}
y en el archivo enviar.php si falta la id del post por ejemplo, aparezca:

Código:
0: No has seleccionado el post a comentar.-
y el botón para enviar los datos es:

Código:
<input class="login" type="button" id="button_add_comment" value="Enviar Comentario" onclick="add_comment('ID_DEL_POST', 'NUMERO DE COMENTARIO'); return false;" tabindex="2" />
Donde ID_DEL_POST; es la id del post ya sea 1, 2, 3, etc.
y NUMERO DE COMENTARIO; por ejemplo en el post hay 3 comentarios y el que sige es 4, el valor que va ahí es 4.

Y cuando se envíe el comentario correctamente, se actualize la página como con ajax. y se vea el comentario. Estaré eternamente agradecido con ustedes :D

El punto es cuál es el código para que se envie a la BD (el codigo del archivo enviar.php)
  #2 (permalink)  
Antiguo 12/10/2009, 15:52
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Agregar comentario con JQUERY

y que te falla en el actual código?
  #3 (permalink)  
Antiguo 13/10/2009, 10:36
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Agregar comentario con JQUERY

Cita:
ID_DEL_POST
y numero de comentario podes incluirlo con PHP, si es que ya lo tenes desde antes de servir la pagina.
  #4 (permalink)  
Antiguo 13/10/2009, 10:41
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Agregar comentario con JQUERY

Cita:
function add_comment(id, nro){
if($('#cuerpo_comment').val() == ''){
$('#cuerpo_comment').focus();
return;
}
$('.msg_add_comment').hide();
$('#button_add_comment').attr('disabled', 'true');
$('#gif_cargando_add_comment').css('display', 'block');
Este es el fragmento en donde buscar los id, y no estan. El resto (ajax) se ejecuta una vez realizada la peticion, salvo por el parametro "data".

En "data" se estan se estan usando variables que yo no veo declaradas en tu funcion:

Cita:
data: 'cuerpo_comment=' + encodeURIComponent($('#cuerpo_comment').val()) + '&id=' + id + '&psecion=' + nro
Y respondiendo a tu consulta, creo que lo que buscas se encuentra aca:
$('#cuerpo_comment').val()
  #5 (permalink)  
Antiguo 13/10/2009, 13:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Agregar comentario con JQUERY

Cita:
El punto es cuál es el código para que se envie a la BD (el codigo del archivo enviar.php)
Ah... momento. Esto es para el foro de PHP o MySql especificamente. Una vez que mandastes las variables con ajax, lo que pase en el servidor es teme ajeno a jquery.
  #6 (permalink)  
Antiguo 18/10/2009, 14:57
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Agregar comentario con JQUERY

Es que tengo una duda con el JQUERY que no tengo muy clara.

Uno para que pueda usar JQUERY, el código PHP & MySQL, tiene que ser distinto si se está utilizando JQUERY, y cuando no?

O es igual, solo que los "if ($comentario=="") {echo ' 0: Comentario vacio';} " son con números y el ajax los devuelve en la misma ventana?

No sé mucho de JQUERY, me explicarían?
  #7 (permalink)  
Antiguo 18/10/2009, 15:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Agregar comentario con JQUERY

uhmm.. :S dejame intentarlo a mi en mi vBulletin aver como me queda y aver si lo podemos aplicar a Spirate..
  #8 (permalink)  
Antiguo 18/10/2009, 16:41
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Agregar comentario con JQUERY

Otra duda, si el comentario se inserta satisfactoriamente en la DB, cómo debería ser el "echo" para que en la página se agrege el código del comentario?

Osea si por ejemplo se envía satisfactoriamente el comentario, y la pagina se actualiza (sin refrescar) mostrando el comentario que acabas de enviar. ¿Me entienden?
  #9 (permalink)  
Antiguo 19/10/2009, 06:14
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Agregar comentario con JQUERY

si la llamada desde jquery ejecuta un script PHP, al tener la confirmacion de que el script anduvo bien tenes la posibilidad de generar texto con jquery . Por ejemplo:
Cita:
success: function(h){

...
$("#div").text("salio ok");
...
}
  #10 (permalink)  
Antiguo 20/10/2009, 17:20
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Agregar comentario con JQUERY

Cita:
Iniciado por mayid Ver Mensaje
si la llamada desde jquery ejecuta un script PHP, al tener la confirmacion de que el script anduvo bien tenes la posibilidad de generar texto con jquery . Por ejemplo:
Y si es con PHP como sería el código?

POr que yo quiero que cuando el comentario se haya enviado, se actualize un div de mi pagina agregando el código html del comentario enviado.

Osea termino de hacer click en el boton, y se agrega el comentario, pero desde el archivo enviar.php
  #11 (permalink)  
Antiguo 23/10/2009, 20:36
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Agregar comentario con JQUERY

Nadie sabe? Cuál es el código: Si el comentario se agrego correctamente se muestra el comentario con AJAX.

Por ejemplo cuando uno muestra un error debe hacer esto:
echo '0: No haz seleccionado el post.-';

y "supongo" que si está correcto despliege el comentario:
echo '1: <center>'.$comentario.'</center>';

Sería así o me equivoco? Lo he hecho así y no me sale nada.

LO HAGO TODO EN PHP!
  #12 (permalink)  
Antiguo 24/10/2009, 12:16
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Agregar comentario con JQUERY

Como lo veo yo, PHP tiene que enviarte una respuesta para que vos evalues:

en vez de "echo '1: <center>'.$comentario.'</center>';" usas:
Cita:
return $resultado = "ok";
o en caso de error:

Cita:
return $resultado = "malo";
Luego, en tu javascript, evaluas el resultado. Yo ahora no me acuerdo exactamente como, pero es algo asi:


Cita:
$.ajax({
type: 'POST',
url: '/comentario/enviar/',
data: 'cuerpo_comment=' + encodeURIComponent($('#cuerpo_comment').val()) + '&id=' + id + '&psecion=' + nro,
success: function(respuesta){
alert(respuesta);
alert(respuesta.resultado); // ??? Si esto funciona, escribes un condicional e imprimes:
$("#div").html("salio ok");
Aca tenes un ejemplo:
http://jquery.malsup.com/form/#ajaxForm

Apreta submit, y te sale un alert con las variables enviadas, y un alert con las respuestas recibidas (en forma de variables).

Última edición por mayid; 24/10/2009 a las 12:22
  #13 (permalink)  
Antiguo 13/11/2009, 21:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Agregar comentario con JQUERY

Que tal Miguelithox, es la primera vez que contesto, pues antes solo leia.
Si entendi bien tu pregunta, lo que necesitas es saber como decirle (desde el archivo php que hace la conexion y demas) a jquery en el archivo donde tengas el js que se agrego, o se elimino, o no pudo conectarse a la BD, etc. que ponga un comentario o muestre un mensaje con un alert.

Pues yo al tener exito en el php, solo hago un: echo 0; //sin conexion p ej.
Si elimine o agregue o hice algo, solo hago un: echo 1; //eliminado
Y asi voy haciendo echo con valores distintos dependiendo de lo que pase.

En el q tiene el codigo jquery hago algo como esto en una funcion para manejar la respuesta:
Código:
/* ESTA FUNCION MUESTRA LOS MENSAJES SEGUN LO QUE LE DEVUELVA EL ARCHIVO xxxxxxx.php CON LOS COMANDOS ECHO  */
	function funcionRespuesta (responseText){
		$("#valores").append(responseText);	/* COPIO LA RESPUESTA EN ESTE DIV OCULTO PARA REVISARLA DESPUES */
		var respuesta = $("#valores").text();  /* AHORA COPIO EL CONTENIDO DEL DIV EN UNA VARIABLE */
		var nombre = $("#user").val();	/*  COPIO EL NOMBRE DE USUARIO DESDE EL ID/NAME DEL INPUT */
		var resp = respuesta.substring(0, 1);  /* TOMO UN SOLO CARACTER DE LO RECIBIDO POR SI ACASO */
		//alert("Cadenas extraida (resp): "+resp);  /* CON ESTE CODIGO VERIFICABA SI HABIA LLEGADO EL VALOR ESPERADO */
		switch(resp) {
			case "1":
					alert("Proceso terminado con éxito!"); /* USO alert TU PUEDES SER MAS CREATIVO */
					$('form')[0].reset();  // RESETEO EL FORMULARIO
					// O LO QUE MEJOR TE PAREZCA
					break;
			case "0":
					alert("Error de conexion");
					// ELIMINO EL DIV QUE RECIBE LOS DATOS DEL OTRO ARCHIVO PARA TENER UN SOLO VALOR SIEMPRE
					$('#valores').remove();break;
			case "2":
					alert("Debe llenar todos los campos.");
					// ELIMINO EL DIV QUE RECIBE LOS DATOS DEL OTRO ARCHIVO PARA TENER UN SOLO VALOR SIEMPRE.
					$('#valores').remove();break;
		}
// DENTRO DEL DIV QUE CONTIENE TODO CREO OTRA VEZ EL DIV DONDE RECIBO LOS VALORES DEVUELTOS POR SI LO BORRARON
		$("#todo").append('<div id="valores"></div>');
Y la funcion que hace esto la llamo desde aqui:
Código:
$('#form, #fat, #formulario').submit(function() { /* formulario ES EL NAME/ID DEL FORMULARIO */
	// Enviamos el formulario usando AJAX
        $.ajax({
            type: 'GET',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            // Mostramos un mensaje con la respuesta de PHP
			success: funcionRespuesta //funcion que se ejecuta una vez enviado el formulario
        })
        return false;
    });
Bueno, imagino que el html ya te lo imaginaras.
Espero haberte ayudado, si es que no lo has solucionado aun. Pero como no vi que lo solucionaras con las indicaciones de mayid...

Si no era esto lo que buscabas, bueno, esperaremos que alguien con mas experiencia nos ilustre. Saludos...
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:30.