Cargando fragmentos de página usando $ .post en jQuery

Estoy obteniendo 2 div de una página usando la solicitud $ .post jQuery AJAX. Ahora, los datos que vienen después de la ejecución son de una solicitud POST y son algo como esto ...

//data.php
<div id="alpha">alpha</div><div id="beta">beta</div>

Ahora, si quiero cargar los datos de solo el div con id 'alpha' en un div con id 'container' en la página actual y si los datos provienen de una solicitud GET, mi vida sería más fácil ...

$("#container").load('data.php #alpha');

resolvería el problema.

Quiero hacer un filtrado similar en la función de éxito usando la función $ .post en jQuery para poder cargar los div apropiados en la página apropiada en la página actual. ¿Cómo puedo conseguir esto?

$.post('data.php',null,function(data){
//what to do here?
});

Muchas Gracias

preguntado el 16 de mayo de 11 a las 20:05

3 Respuestas

Si la respuesta es exactamente como la describe y no tiene un elemento raíz.

$.post("some url", {},
  function(data) {
    var $d = $("<div/>").append(data);
    $('body').append($d.find("#alpha"));
});

Ejemplo en jsfiddle

contestado el 17 de mayo de 11 a las 00:05

Funciona de maravilla, pero ¿puede explicar por qué tuvimos que agregar datos primero a un ' ' ¿etiqueta? - LoneWOLFs

@LoneWOLFs, la razón es porque su respuesta se trata como una matriz de dos objetos jQuery $(data).length = 2 Agregarlo a un div le permite encontrar el id del padre correctamente. Emitir un find() desde $(data) falla ya que ambos elementos no tienen hijos. Para que funcione sin $("<div/>") puedes usar .filter() como $(data).filter("#alpha"); lo que reducirá el conjunto al selector emparejado correcto. - Mark Coleman

Impresionante, despejó bastante bien las dudas. Un billón de gracias por responder. - LoneWOLFs

$.post('data.php',
       function(data){
    $("#container").html($(data).find('#alpha'));

});

asumiendo que está reemplazando la totalidad del contenedor. si lo vas a agregar, entonces ...

$.post('data.php',
       function(data){
    $("#container").append($(data).find('#alpha'));

});

contestado el 17 de mayo de 11 a las 00:05

Los datos de FatherStorm contienen 2 div. Necesito separarlos. - LoneWOLFs

FatherStorm el código anterior no funciona. No creo que $ (data) sea correcto. - LoneWOLFs

$('#container').append($(data).find('#alpha'));

contestado el 17 de mayo de 11 a las 00:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.