Возврат данных не работает в jQuery с использованием Ajax
Вопрос
Я разработал код с помощью Ajax и jQuery.У меня есть ответ от my.php, и я попытался извлечь значения ответа.Вот код (HTML):
Мой.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>
...
Проблема в том, что когда я попытался предупредить, оно не сработало.Что не так в этой логике?Должен ли я использовать другую функцию для извлечения заголовка и сообщения?
Решение
ОК, иди 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);
}
Другие советы
Если ответ возвращается в том виде, в котором вы его написали, то код, который я вам дал, будет работать.
Вам действительно нужно научиться пользоваться отладчиком (поджигатель) и поместите точки останова в свой код, чтобы вы могли использовать консоль для проверки селекторов, просмотра значений переменных и т. д.Кроме того, вам действительно следовало ответить на исходный вопрос и ответ, который я дал, а не открывать совершенно новый вопрос, тем более что вы даже не сделали перекрестную ссылку на свой оригинал.
Попробуйте использовать это вместо этого:
var oneval = $("#response #title").text();
var subval = $("#response #message").text();