Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Ajax dentro de Ajax

Estas en el tema de Ajax dentro de Ajax en el foro de Jquery en Foros del Web. Necesito anidar un ajax me explico: Código: var o = jQuery.noConflict(); o(document).ready(function() { o("#sendFormPublication").click(function() { var Publication = o("textarea#PostedValidateField").val(); var dataString = 'Publication=' + Publication; ...
  #1 (permalink)  
Antiguo 12/08/2013, 12:17
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 11 años, 5 meses
Puntos: 6
Pregunta Ajax dentro de Ajax

Necesito anidar un ajax me explico:

Código:
var o = jQuery.noConflict();

o(document).ready(function() {

    o("#sendFormPublication").click(function() {

        var Publication = o("textarea#PostedValidateField").val();
        var dataString = 'Publication=' + Publication;

        o.ajax({
            type: "POST",
            url: "addPublication.php",
            data: dataString,
            success: function() {
               //Lo que necesito aqui es traer otro archivo del cual tomare un valor
               //ese valor lo quiero recoger de un div.
                o('#body-news-reply').append(Publication);
            }
        });
        return false;
    });
});
¡En respuesta necesito solicitar otro archivo del cual tomare un valor de un div si alguien me pudiera ayudar agradeceria mucho!
  #2 (permalink)  
Antiguo 12/08/2013, 19:37
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: Ajax dentro de Ajax

Hola,

Si entiendo bien, quieres que una vez que ejecute tu AJAX, en el success llame otro archivo y una vez cargado ese archivo ejecute algo cierto?

Si es asi, necesitas algo asi, que seria Callback
Código:
success: function(data, textStatus, XMLHttpRequest)
{
    //Esto es lo que retorno tu consulta
    alert(data);
    //Aqui cargamos otro archivo
    $('#holaaaaa').load("otro_archivo.php", function(){

               //Cuando termine de cargar este archivo
               // ejecutara esto
               alert("cargue el archivo, ahora ejecute el alert");
    });
}
Saludos
__________________
Si encuentras que tu pregunta fue respondida, se agradeceria enormemente que la marcaras como solucionada... si... es el boton verde gigante que esta al final de la pagina :)
  #3 (permalink)  
Antiguo 13/08/2013, 16:08
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Ajax dentro de Ajax

Gracias por tomarte el tiempo de contestarme me parece bien lo que planteas solo que lo que voz me dices con load esque cargue el archivo en un div me parece una forma muy buena aunque en si no quiera meter el archivo en un div podria esconder el div con css bueno abusando de la confianza necesito hacer lo siguiente haber si me puedes ayudar. En este caso el archivo del cual quiero tomar un valor, es una consulta que me trae un id lo que quiero en si es tomar el id y metrlo en una variable. no se si me puedas decir como tomar el valor del div que esta en el archivo que traigo en la respuesta por ajax.
  #4 (permalink)  
Antiguo 13/08/2013, 16:24
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: Ajax dentro de Ajax

Hola,

Tienes varias formas el "load" es solo una, en general todas son derivaciones de la consulta "ajax", pero son funciones mas simplificadas, por ejemplo, puedes ocupar "post" para hacer la consulta y asi trabajar con el resultado, cabe señalar que el resultado idealmente deberia venir limpio

http://api.jquery.com/jQuery.post/

Siguiendo con el mismo ejemplo que te deje anteriormente

Código:
 $.ajax({             type: "POST",
                         url: "addPublication.php",
                         data: dataString,
                        success: function(data, textStatus, XMLHttpRequest) 
                        {
                              //Esto es lo que retorno tu primera consulta
                              alert(data.trim());

                               //Aqui ejecutamos la cargamos del otro archivo
                               $.post('otroArchivo.html', function(data) 
                                {

                                    //Alert de la 2da consulta
                                   alert(data.trim());

                                    //Guardamos el resultado en un div llamado result
                                   $('.result').html("El resultado de mi consulta por POST es "+data);
                              });
             }
 });
Si te das cuenta tanto en la primera consulta, como en la segunda, la variable "data" es en donde se almacena la respuesta, es decir, el resultado de tu consulta, con esa variable puedes hacer lo que desees, puedes mostrarla en pantalla con un alert, o insertarla en un div.

No se si me entiendes, o tal vez yo no te entiendo

Saludos
__________________
Si encuentras que tu pregunta fue respondida, se agradeceria enormemente que la marcaras como solucionada... si... es el boton verde gigante que esta al final de la pagina :)
  #5 (permalink)  
Antiguo 13/08/2013, 16:45
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Ajax dentro de Ajax

Mira te dire lo que pasa esque tengo un sistema de noticias el cual puedes crear una nueva o en este caso eliminarla.

con este codigo inserto la noticia por ajax

Cita:
var o = jQuery.noConflict();

o(document).ready(function() {

o("#sendFormPublication").click(function() {

var Publication = o("textarea#PostedValidateField").val(); //Recojo el valor del textarea
var dataString = 'Publication=' + Publication; // a la variable dataString le paso el valor de la variable Publication (El value del textarea)

o.ajax({
type: "POST",
url: "Topic/php/addNow.php",
data: dataString,
success: function() {
o('#body-news-reply').append(Publication); //Meto el value del texarea que se guardo en la variable Publication y lo imprimo en el div cuyo id="body-news-reply"

}
});
return false;
});
Bueno asta hay todo bien ahora con el que elimina la noticia

Cita:
var i = jQuery.noConflict();
i('.delete').click(function(){

//Recogemos la id del contenedor padre
var parent = i(this).parent().attr('id');
//Recogemos el valor del servicio
var service = i(this).parent().attr('data');

var dataString = 'id='+service; // A la variable dataString le asigno el valor que recogi de data y id


i.ajax({
type: "POST",
url: "Topic/modules/php/deletePublication.php",
data: dataString,
success: function() {
i('#'+parent).fadeOut(1000); //Aplico efecto de desvanecimiento
alertify.log("¡Se ha eliminado con éxito!");
}
});


});
El problema biene porque el para eliminar una noticia primero debo recojer el idNoticia el idNoticia lo imprimo con una consulta. Pero problema surge cuando creo una noticia y no e recargado la pagina entonces la noticia aun no tiene idNoticia porque en este caso la noticia que se hiso por ajax no es mas que la respuesta. asta que no recargue la pagina y me traiga la noticia por consulta.

Entonces la unica forma que se me ocurrio fue crear una consulta en otro archivo que este bajo las siguientes condiciones LIMIT 0,1 ORDER BY DESC asi me trairia el ultimo registro meto el idNoticia en un div el contenido del div lo paso a una variable y lo imprimo. en la respuesta y asi ya cuando el usuario aiga publicado y no le guste pueda eliminarla.
  #6 (permalink)  
Antiguo 13/08/2013, 16:54
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: Ajax dentro de Ajax

Una consulta, que pasaria si hay 3 usuarios conectados al mismo tiempo y dos desean eliminar, pero justame el 3ro fue el ultimo que publico pero el no desea eliminar su noticia, segun tu logica se eliminarian, ahora me puedes decir, si pero tendrian distinto ID si estuvieran logueado, perfecto... pero si tengo 2 usuarios logueados con la misma cuenta?.

Yo creo, que como es un sistema de noticias el ID que se genera no es muy importante ocultarlo, por lo tanto no seria mas facil agregarlo en la publicacion como un class o un input oculto? asi eliminarias SOLO esa noticia y no otra, me explico? publicas, agregas un div con el ID de la noticia, y cuando vayas a eliminarlo lo recuperas, creo yo que seria mas optimo.

Saludos
__________________
Si encuentras que tu pregunta fue respondida, se agradeceria enormemente que la marcaras como solucionada... si... es el boton verde gigante que esta al final de la pagina :)
  #7 (permalink)  
Antiguo 13/08/2013, 17:08
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Ajax dentro de Ajax

Haber si me parece bien y en cuanto a lo que me dices si traigo el valor por logueo pero como poder poner el id en un inpud cuando el id es autoincremental osea como saber que numero sigue. otra el id ya lo imprimo en un id="" y data="" de hay recojo los valores para eliminar la noticia. el problema biene cuando un usuario publica no puedo saber que idNoticia sigue ya que no es una consulta si no mas que la respuesta. asta que no se recargue haria la conculta de nuevo y entonces si me trairia el idNoticia que se publico.
  #8 (permalink)  
Antiguo 13/08/2013, 17:20
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: Ajax dentro de Ajax

Si el publico una noticia, segun esto, lo guarda en la BD cierto? si es asi...

Código:
o.ajax({
type: "POST",
url: "Topic/php/addNow.php",
data: dataString,
success: function() {
o('#body-news-reply').append(Publication);
Entonces, en nuestro success, obtenemos los datos de la respuesta

Código:
success: function(data, textStatus, XMLHttpRequest)
En nuestro archivo "addNow.php", una vez que inserte ocuparemos

Código:
//Insertamos
$resp = mysql_query($conexion, "insert into ...")

//Si retorna un 1, inserto Oki doki, y obtenemos el ultimo ID insertado
if ($resp == 1)
    $resp = mysql_insert_id($conexion);
else
        $resp = 0;

echo $resp;
Por ultimo, volvemos a nuestro Ajax y agregamos un DIV con la info

Código:
success: function(data, textStatus, XMLHttpRequest){
//Si el ID que viene es mayor que 0, viene oki doki
if(data.trim() > 0)
   respuesta = '<div id="noticia'+data.trim()+'">'+Publication+'</div>';
else
  respuesta = Publication;

o('#body-news-reply').append(respuesta );
Y luego antes de eliminar obtenemos el valor del div "noticiaxx"

Por ejemplo ;)

Saludos
__________________
Si encuentras que tu pregunta fue respondida, se agradeceria enormemente que la marcaras como solucionada... si... es el boton verde gigante que esta al final de la pagina :)
  #9 (permalink)  
Antiguo 13/08/2013, 17:58
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Ajax dentro de Ajax

Aver creo que no entendi bien.

Cita:
var o = jQuery.noConflict();

o(document).ready(function() {

o("#sendFormPublication").click(function() {

var Publication = o("textarea#PostedValidateField").val(); //Recojo el valor del textarea
var dataString = 'Publication=' + Publication; // a la variable dataString le paso el valor de la variable Publication (El value del textarea)

o.ajax({
type: "POST",
url: "Topic/php/addNow.php",
data: dataString,
success: function() {
o('#body-news-reply').append(Publication); //Meto el value del texarea que se guardo en la variable Publication y lo imprimo en el div cuyo id="body-news-reply"

}
});
return false;
});
Cita:
var i = jQuery.noConflict();
i('.delete').click(function(){

//Recogemos la id del contenedor padre
var parent = i(this).parent().attr('id');
//Recogemos el valor del servicio
var service = i(this).parent().attr('data');

var dataString = 'id='+service; // A la variable dataString le asigno el valor que recogi de data y id


i.ajax({
type: "POST",
url: "Topic/modules/php/deletePublication.php",
data: dataString,
success: function() {
i('#'+parent).fadeOut(1000); //Aplico efecto de desvanecimiento
alertify.log("¡Se ha eliminado con éxito!");
}
});


});
Mira asi saco las noticias


<div class="body-news-reply" id="" data=""></div>

Cita:
mysql_select_db($database_CoxionDawe, $CoxionDawe);
$query_ConNoticia = "SELECT * FROM Noticia ORDER BY Noticia.TimeNoticia DESC";
$ConNoticia = mysql_query($query_ConPublications, $CoxionDawe) or die(mysql_error());
while($row_Noticia = mysql_fetch_array($ConNoticia, $result_type = MYSQL_BOTH)) { ?>

<div class="Noticia" id="<?php echo $row_Noticia["idPublication"]; ?>" data="<?php echo $row_Noticia["idNoticia"]; ?>">

<?php echo $row_Noticia["Noticia"]; ?>

</div>

<?php } ?>

Y en el archivo addNow.php

Cita:
$User = $_SESSION['MM_User'];
$Noticia = $_POST['Publication'];

$insertNoticia = sprintf("INSERT INTO Noticia (idUser, Noticia) VALUES ('".$User."', '".$Noticia."')");

mysql_select_db($database_CoxionDawe, $CoxionDawe);
$Result1 = mysql_query($insertNoticia, $CoxionDawe) or die(mysql_error());

Y el deletePublication.php

Cita:
$service = $_POST['Publication'];

$deleteNoticia = sprintf("DELETE FROM Noticia WHERE idNoticia='".$service."'");

mysql_select_db($database_CoxionDawe, $CoxionDawe);
$Result1 = mysql_query($deleteNoticia, $CoxionDawe) or die(mysql_error());
  #10 (permalink)  
Antiguo 13/08/2013, 18:01
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: Ajax dentro de Ajax

Te envio Mensaje Privado.

Saludos
__________________
Si encuentras que tu pregunta fue respondida, se agradeceria enormemente que la marcaras como solucionada... si... es el boton verde gigante que esta al final de la pagina :)

Etiquetas: ajax, post
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 12:48.