Странности 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>/); в результате каждому блоку в конце приписывается ,> хотя в ответе сервера, этих символов нет |
Цитата:
Цитата:
Цитата:
Вы привели не весь код, и от указанного вами кода не должно быть такого эффекта дайте ссылку на сайт с этим скриптом - глянем отладчиком. либо сами посмотрите отладчиком - умение отлаживать, это важно также как уметь ходить |
А разве ноды нельзя получить при ответе? А там привычным getElementById проверить?
|
етпр.рф
а зачем писать весь код? вроде всё ясно описано... вырезаю регулярным выражением вставляю через innerHTML специально для вас, вставляю textarea, в которой отображается ответ сервера, и два вырезанных блока |
может быть есть другой, более приемлимый способ, чем мой?
|
Антон Крамолов, можно, через xml (правда, там особо getElementById не воспользуешься).
|
Цитата:
чем плохо однозначное определение пределов, путём описания <div id=val>...</div id=val> по моему, именно в этом случае всё должно хорошо вырезаться |
Цитата:
|
Цитата:
|
Использовать responseXML (и, соответственно, присылать ответ сервера в формате XML)
Почитайте "Javascript - the Definitive guide" Фленагана и "Pro Javascript Techniques" Резига. |
Цитата:
|
|
Цитата:
|
А почему нельзя присылать ответ сервера в формате xml и получать нужные теги через xhr.responseXML.getElementsByTagName() (ну, и выбирая нужные)? А потом вставляя, соответственно.
|
Цитата:
Правда есть другие, архитектурные ошибки, о чем вам уже сказали, но конкретно описанной - нет Цитата:
И без этого прекрасно можно отлаживать. В каждом браузере есть панели разработчика, позволяющие отлаживать JS в частности увидеть запросы, и результаты работы .............. Дебаг на скорую руку показал в каком коде, который Вы тут не привели у вас ошибка: document.getElementById('isay').innerHTML = unswer.match(isayr); document.getElementById('rek').innerHTML = unswer.match(rekr); А теперь идите и читайте справочник, чтобы такого больше не писать А именно http://javascript.ru/string/match Эта функция возвращает не строку, а массив. В данном случае массив из двух элементов - полной строки, вместе с обертками id=say, и последней совпавшей подстроки - угловой скобки поэтому массив приведенный к строке, включает обе этих строки, через запятую |
:)
спасибо. что то я этот момент с массивом упустил... впредь буду внимательнее а по поводу отладчика, у меня он почему-то не работает (Firefox 10/Centos 6.2)... странно это всё |
Цитата:
|
Цитата:
Но он какой-то странный, что ли. В общем в лисе я фаербагом продолжаю пользоватся, бо привычней |
Цитата:
Хотя я перешёл на хром - не выдержал подвисаний лисы, которые почему-то очень сильны на линуксе (ну, у меня, во всяком случае). Теперь пользуюсь больше тамошним отладчиком. P. S. А вот на винде у меня до сих пор фаерфокс, и никаких жалоб, скорость прилично сопоставима с хромом. |
Часовой пояс GMT +3, время: 08:27. |