почему jquery .text () всегда возвращает пустую строку? - PullRequest
2 голосов
/ 06 сентября 2010

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

<div id='type'>success</div>
<div id="graph"></div>
<script type='text/javascript'>
   //some script that manipulates the graph div
</script>

и в функции успеха (ответа) моего .ajax у меня есть:

$(response).find('#type').text()

моя проблема в том, что он всегда возвращает ноль, если я использую .html()

и 'пустая строка', когда я использую .text();

Что-то не так с моим синтаксисом?

Ответы [ 5 ]

9 голосов
/ 06 сентября 2010

Это потому, что он находится на корневом уровне ответа, поэтому .find() не будет работать (потому что это не потомок), вам нужно .filter(), вот так :

$(response).filter('#type').text()
3 голосов
/ 06 сентября 2010

Ваш ответ HTML должен иметь корневой элемент, чтобы он мог find() элементов, потому что find() ищет потомков элемента DOM.Этого можно добиться, добавив ответ в DOM документа или в другой элемент DOM jQuery.

Вы также можете сделать это, и это будет работать также:

$('<div>' + response + '</div>').find('#type').text();
1 голос
/ 06 сентября 2010

здесь вы можете проверить ваш код должен работать нормально.у вас должна быть проблема в ajax, попробуйте с «alert» для «response» посмотреть, какой ответ вы получите

test

0 голосов
/ 06 сентября 2010

В вашем запросе $.ajax() установите dataType как html

0 голосов
/ 06 сентября 2010

Это не может быть чем-то таким простым, как одинарные кавычки вокруг идентификатора в типе div, не так ли?

(HTML, а не JS)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...