Возвращение данных не работает в JQuery с использованием Ajax - PullRequest
0 голосов
/ 31 декабря 2008

Я разработал код с Ajax и jQuery. Я получил ответ от my.php, и у меня есть попытался извлечь значения из ответа. Вот код (HTML):

My.php

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

Я пытаюсь извлечь заголовок и сообщение, чтобы мой код был ниже.

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

...

Проблема в том, что когда я пытался предупредить, это не работает. Что не так с этой логикой? Должен ли я использовать другую функцию для извлечения заголовка и сообщения?

Ответы [ 3 ]

1 голос
/ 31 декабря 2008

ОК, перейдите к http://jsbin.com/udige/, и вы увидите, что он работает.

Ключ использует .filter, а не .find, так как два div являются корневыми элементами в ответе. Моя ошибка.

В основном выполните следующие действия:

success: function(data){
    $("#response").html(data);
    var $response = $(data);
    var oneval = $response.filter('#title').text();
    var subval = $response.filter('#message').text();
    alert(oneval);
}
0 голосов
/ 31 декабря 2008

Если ответ возвращается после того, как вы его написали, то код, который я вам дал, будет работать.

Вам действительно нужно научиться использовать отладчик ( Firebug ) и ставить точки останова в своем коде, чтобы вы могли использовать консоль для проверки селекторов и просмотра значений переменных и т. Д. Кроме того, вам действительно следовало ответить на первоначальный вопрос и ответ, который я дал, вместо того, чтобы открывать совершенно новый вопрос, тем более что вы даже не дали перекрестную ссылку на свой оригинал.

0 голосов
/ 31 декабря 2008

Попробуйте использовать это вместо:

var oneval = $("#response #title").text();
var subval = $("#response #message").text();
...