Pregunta

He desarrollado código con Ajax y jQuery. Tengo una respuesta de mi.php, y tengo Intenté extraer los valores de la respuesta. Aquí el código (HTML):

Mi.php

?php
    echo '<div id="title">My Title </div>';
    echo '<div id="message"> My message </div>';
?>

Intento extraer el título y el mensaje, por lo que mi código está abajo.

    <head>
        <script type="text/javascript" src="js/jquery-1.2.6.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                alert("OK");

                $.ajax({
                    type:"POST",
                    url: "my.php",
                    cache:false ,
                    success: function(data){
                        $("#response").html(data);
                        var $response = $(data);
                        var oneval = $response.find('#title').text();
                        var subval = $response.find('#message').text();
                        alert(oneval);
                    }
                });
            });
        </script>
    </head>

    <body>
        <div id="response">
        </div>
    </body>
</html>

...

El problema es cuando intenté alertar, no está funcionando. ¿Qué está mal con esta lógica? ¿Debo usar otra función para extraer el título y el mensaje?

¿Fue útil?

Solución

Bien, vaya a http://jsbin.com/udige/ y podrá verlo funcionar .

La clave está usando .filter , no .find, ya que los dos divs son elementos raíz en la respuesta. Mi error.

Básicamente haz lo siguiente:

success: function(data){
    $("#response").html(data);
    var $response = $(data);
    var oneval = $response.filter('#title').text();
    var subval = $response.filter('#message').text();
    alert(oneval);
}

Otros consejos

Si la respuesta está regresando a medida que la escribiste, entonces el código que te di funcionará.

Realmente necesitas aprender a usar un depurador ( Firebug ) y ponga puntos de interrupción en su código para que pueda usar la consola para probar los selectores y observar los valores de las variables, etc. Además, realmente debería haber respondido a la pregunta original y la respuesta que di en lugar de abrir una pregunta completamente nueva, especialmente porque ni siquiera ha hecho referencia cruzada a su original.

Intenta usar esto en su lugar:

var oneval = $("#response #title").text();
var subval = $("#response #message").text();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top