Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Странности match (https://javascript.ru/forum/misc/27449-strannosti-match.html)

serj_russi 13.04.2012 11:29

Странности match
 
При получении синхронного AJAX запроса от сервера, <div id=cont>....</div id=cont><div id=rek>....</div id=rek>

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

var aa = new RegExp (/<div id=cont>(.|\s)*?<\/div id=cont>/);
var ss = new RegExp (/<div id=rek>(.|\s)*?<\/div id=rek>/);

в результате каждому блоку в конце приписывается ,>
хотя в ответе сервера, этих символов нет

Gvozd 13.04.2012 12:31

Цитата:

Сообщение от serj_russi
</div id=cont>

Цитата:

Сообщение от serj_russi
(.|\s)

какие страшные вещи вы пишите
Цитата:

Сообщение от serj_russi
в результате каждому блоку в конце приписывается ,>
хотя в ответе сервера, этих символов нет

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

Антон Крамолов 13.04.2012 12:33

А разве ноды нельзя получить при ответе? А там привычным getElementById проверить?

serj_russi 13.04.2012 16:00

етпр.рф

а зачем писать весь код?

вроде всё ясно описано... вырезаю регулярным выражением вставляю через innerHTML

специально для вас, вставляю textarea, в которой отображается ответ сервера, и два вырезанных блока

serj_russi 13.04.2012 16:19

может быть есть другой, более приемлимый способ, чем мой?

trikadin 13.04.2012 17:18

Антон Крамолов, можно, через xml (правда, там особо getElementById не воспользуешься).

serj_russi 13.04.2012 17:22

Цитата:

Сообщение от trikadin (Сообщение 168838)
Антон Крамолов, можно, через xml (правда, там особо getElementById не воспользуешься).

в любом случае придётся вырезать часть кода, для вставки на страницу

чем плохо однозначное определение пределов, путём описания <div id=val>...</div id=val>
по моему, именно в этом случае всё должно хорошо вырезаться

trikadin 13.04.2012 18:44

Цитата:

Сообщение от serj_russi
в любом случае придётся вырезать часть кода, для вставки на страницу

В смысле? Что там вообще вырезать надо будет? Там реги вообще не нужны)

serj_russi 13.04.2012 19:17

Цитата:

Сообщение от trikadin (Сообщение 168858)
В смысле? Что там вообще вырезать надо будет? Там реги вообще не нужны)

а как сделать, что бы входящий текст с тэгами разделить на несколько частей?

trikadin 13.04.2012 19:27

Использовать responseXML (и, соответственно, присылать ответ сервера в формате XML)

Почитайте "Javascript - the Definitive guide" Фленагана и "Pro Javascript Techniques" Резига.

serj_russi 13.04.2012 19:38

Цитата:

Сообщение от trikadin (Сообщение 168870)
Использовать responseXML (и, соответственно, присылать ответ сервера в формате XML)

Почитайте "Javascript - the Definitive guide" Фленагана и "Pro Javascript Techniques" Резига.

к сожалению не имею возможности. может накидаете простенький код, для возможности разделения по блокам, ответа на AJAX запрос?

trikadin 13.04.2012 19:48

Ссылки на книги:
Фленаган, Резиг

Об аяксе на этом сайте.

serj_russi 13.04.2012 19:54

Цитата:

Об аяксе на этом сайте.
вы не поняли. нужен JS который сможет разбить ответ responseTEXT, который содержит тэги такого типа, и вставляет их в контейнеры на сайте, без лишних символов. всё остальное уже есть. работает

trikadin 13.04.2012 21:04

А почему нельзя присылать ответ сервера в формате xml и получать нужные теги через xhr.responseXML.getElementsByTagName() (ну, и выбирая нужные)? А потом вставляя, соответственно.

Gvozd 13.04.2012 22:21

Цитата:

Сообщение от serj_russi
а зачем писать весь код?

потому что в том обрывке кода, что вы привели нету указанной вами ошибки.
Правда есть другие, архитектурные ошибки, о чем вам уже сказали, но конкретно описанной - нет
Цитата:

Сообщение от serj_russi
специально для вас, вставляю textarea, в которой отображается ответ сервера, и два вырезанных блока

Зачем?
И без этого прекрасно можно отлаживать.
В каждом браузере есть панели разработчика, позволяющие отлаживать JS
в частности увидеть запросы, и результаты работы

..............
Дебаг на скорую руку показал в каком коде, который Вы тут не привели у вас ошибка:
document.getElementById('isay').innerHTML = unswer.match(isayr);
document.getElementById('rek').innerHTML = unswer.match(rekr);

А теперь идите и читайте справочник, чтобы такого больше не писать
А именно http://javascript.ru/string/match
Эта функция возвращает не строку, а массив.
В данном случае массив из двух элементов - полной строки, вместе с обертками id=say, и последней совпавшей подстроки - угловой скобки
поэтому массив приведенный к строке, включает обе этих строки, через запятую

serj_russi 14.04.2012 10:34

:)
спасибо. что то я этот момент с массивом упустил... впредь буду внимательнее

а по поводу отладчика, у меня он почему-то не работает (Firefox 10/Centos 6.2)... странно это всё

trikadin 14.04.2012 11:17

Цитата:

Сообщение от serj_russi
а по поводу отладчика, у меня он почему-то не работает (Firefox 10/Centos 6.2)... странно это всё

На лису надо firebug ставить.

Gvozd 14.04.2012 13:52

Цитата:

Сообщение от trikadin
На лису надо firebug ставить.

В лисе с недавних пор появился встроенный отладчик.
Но он какой-то странный, что ли.
В общем в лисе я фаербагом продолжаю пользоватся, бо привычней

trikadin 14.04.2012 21:10

Цитата:

Сообщение от Gvozd
В лисе с недавних пор появился встроенный отладчик.
Но он какой-то странный, что ли.
В общем в лисе я фаербагом продолжаю пользоватся, бо привычней

Так там давно уже было что-то такое. Во всяком случае, для html/css точно. А firebug удобен тем, что это один инструмент для всего.

Хотя я перешёл на хром - не выдержал подвисаний лисы, которые почему-то очень сильны на линуксе (ну, у меня, во всяком случае).

Теперь пользуюсь больше тамошним отладчиком.

P. S. А вот на винде у меня до сих пор фаерфокс, и никаких жалоб, скорость прилично сопоставима с хромом.


Часовой пояс GMT +3, время: 08:27.