Pergunta

Eu desenvolvi código com Ajax e jQuery. Eu tenho uma resposta do my.php, e eu tenho tentou extrair os valores da resposta. Aqui o código (HTML):

My.php

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

Eu tento extrair o título e mensagem para o meu código está abaixo.

    <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>

...

O problema é quando eu tentei alerta, ele não está funcionando. O que está errado com essa lógica? Devo usar outra função para extrair o título ea mensagem?

Foi útil?

Solução

OK, vá para http://jsbin.com/udige/ e você pode vê-lo trabalhando .

A chave é usar .filter, não .find como os dois divs são elementos raiz na resposta. O meu erro.

Basicamente fazer o seguinte:

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

Outras dicas

Se a resposta está vindo para trás como você o escreveu, em seguida, o código que te dei vai funcionar.

Você realmente precisa aprender a usar um depurador ( Firebug ) e colocar pontos de interrupção em seu código para que você possa usar o console para seletores de teste e olhar para os valores das variáveis, etc. Além disso, você deve realmente ter respondido à pergunta original e resposta que eu dei ao invés de abrir uma nova pergunta inteira especialmente desde que você não tenha ainda cruzados seu original.

Tente usar este em vez disso:

var oneval = $("#response #title").text();
var subval = $("#response #message").text();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top