Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парсер DOM 
V
    Опции темы
od0201
Дата 5.11.2014, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: нет
Всего: 1



Код

<ul>
  <li>hi</li>
  <li>hello</li>
</ul>


Код

$(document).ready(function(){
   $('#btn_submit').click(function(e){
    e.preventDefault();
    $('#result').text("");
        $.get("http://od0201.ru/cgi-bin/index.cgi", { id: "55875" }, function(data){
            $(data).("li").each(function(){
                $('#result').text($('#result').text() + $(this).text() + " ");
            });
        });
    });
});

нужно получить список.
через регулярное выражение
var re=/<li>(.*?)<.li>/gi;
список могу получить, а при помощи jQuery никак не добьюсь этого. помогите найти/исправить ошибку
спасибо

PM MAIL   Вверх
Aliance
Дата 5.11.2014, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



В data хранится просто строка, которая является HTML разметкой, но это не значит, что она является частью DOM.

Если сервер ваш - сделайте выдачу результатов в виде JSON, если вам хочется именно таких извращений - вставляйте строку в скрытый блок, а дальше манипулируйте в DOM уже через jQuery.

PS: пользуйтесь правильно кнопкой код, там есть выпадающий список с выбором языка (javascript)
PM MAIL WWW ICQ Skype   Вверх
od0201
Дата 5.11.2014, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: нет
Всего: 1



Спасибо, многое прояснили для меня. 2 дня как в этой теме  smile  
Пока оставлю так, а при необходимости воспользуюсь Вашим советом.

Код

$(document).ready(function(){
   $('#btn_submit').click(function(e){
    e.preventDefault();
        $.get("http://od0201.ru/cgi-bin/index.cgi", { id: "55875" }, function(data){
            var re=/<li>(.*?)<.li>/gi;
            var matches;
            var x=[];
            while ((matches = re.exec(data)) != null){x.push(matches[1])}
            $('#result').text("");
            $('#result').append(x.join('='));
        });
    });
});

 тему пока не закрываю, может кто-то еще прокоментирует мой код, мне будет интересно.
PM MAIL   Вверх
sQu1rr
Дата 6.11.2014, 13:41 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Aliance @  5.11.2014,  16:39 Найти цитируемый пост)
В data хранится просто строка, которая является HTML разметкой, но это не значит, что она является частью DOM.

нет, это является фрагментов, и вполне себе легально, строка же передается в $() - которая делает из нее фрагмент разметки со всеми вытекающими

Ошибка тут
Код

$(data).("li").each(function(){


Должно быть
Код

$(data).find("li").each(function(){


И да, никогда, никогда, не парсте HTML регекспами, почитайте ответ тут:
http://stackoverflow.com/questions/1732348...-contained-tags

Это сообщение отредактировал(а) sQu1rr - 6.11.2014, 13:42
PM MAIL Skype GTalk   Вверх
od0201
Дата 12.11.2014, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: нет
Всего: 1



Исправил. Все работает. Спасибо.
Код

$.get("http://od0201.ru/cgi-bin/index.cgi", { id: "55875" }, function(data){
  var x=[];
  $(data).find("li").each(function(){    x.push($(this).text()) });
//$('#result').append(x.join('='));
  $('#result').append(" found "+x.length+ " post(s)");
});        


PM MAIL   Вверх
od0201
Дата 19.2.2015, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: нет
Всего: 1



Цитата(Aliance @ 5.11.2014,  16:39)
....
Если сервер ваш - сделайте выдачу результатов в виде JSON, если вам хочется именно таких извращений - вставляйте строку в скрытый блок, а дальше манипулируйте в DOM уже через jQuery.
...

вернемся к замечанию, накопилось много запросов и хочется сделать "по человечески".

итак JSON
как передавать данные от сервера, существует ли какой-то специальный протокол или способ
 или так его отсылать
Код

<html>
<body>{"ID":11113434,"Password":"aassdd"}
</body></html>

 и так принимать 
Код

$(body).text()



PM MAIL   Вверх
sQu1rr
Дата 20.2.2015, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(od0201 @  19.2.2015,  14:12 Найти цитируемый пост)
или так его отсылать

Отсылать нужно просто тоекст в кодироквке UTF-8 без всяких там тагов
Код

{"ID":11113434,"Password":"aassdd"}



Цитата(od0201 @  19.2.2015,  14:12 Найти цитируемый пост)
 и так принимать 

Принимать тут:

Цитата(od0201 @  5.11.2014,  15:27 Найти цитируемый пост)
$.get("http://od0201.ru/cgi-bin/index.cgi", { id: "55875" }, function(data){ console.log(data); }

Jquery поймет что это джейсон и сам сконвертирует, в обычной ситуации. но если что-то не получается, можно явно задать хинт - для этого читайте доки. Вроде как параметр returnType не помню точно

PM MAIL Skype GTalk   Вверх
od0201
Дата 22.2.2015, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: нет
Всего: 1



Цитата(sQu1rr @  20.2.2015,  15:43 Найти цитируемый пост)
Отсылать нужно просто тоекст в кодироквке UTF-8 без всяких там тагов

спасибо, именно в этом была моя ошибка, я не задумываясь обернул данные в теги. Все заработало.

Это сообщение отредактировал(а) od0201 - 22.2.2015, 13:35
PM MAIL   Вверх
Aliance
Дата 24.2.2015, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Цитата(sQu1rr @  20.2.2015,  16:43 Найти цитируемый пост)
Jquery поймет что это джейсон и сам сконвертирует, в обычной ситуации. но если что-то не получается, можно явно задать хинт - для этого читайте доки. Вроде как параметр returnType не помню точно

$.getJSON
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.