Javascript RegEx и XMLHttpRequest - PullRequest
2 голосов
/ 20 февраля 2011

Я пытаюсь разобрать тег из текста, возвращенного XMLHttpRequest, но не могу заставить его работать. Я протестировал его в редакторе w3schools (http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_i), где я могу использовать его, когда в тексте нет новых строк, но я застрял:

<script language="javascript" type="text/javascript">

var req = new XMLHttpRequest();  
req.open('GET', 'www.mysite.com/index.html', false);   

req.onreadystatechange=function() {

   if (req.readyState==4) {
      var text = req.responseText;
      var tag = /<div class='classdef'>(.*?)<div/gm;
      var mt = tag.exec(text);
      alert(mt);
      return;
   }
};

req.send(null);  

</script>

В лучшем случае в окне оповещения просто записывается необработанное регулярное выражение "/(.*?)

Кто-нибудь получил указатель на то, что я делаю неправильно? :)

С уважением.

ОБНОВЛЕННОЕ РЕШЕНИЕ

Спасибо за все ваши советы, кажется, что в моем коде есть нечто большее, чем одна вещь. Моей целью было передать данные в раздел страницы с другой страницы. В итоге я использовал jquery, как вы предложили:

<div id="IdOfTagToAddTo"></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
<script>

$('#IdOfTagToAddTo').load('somePageInMyDomain.html #SomeIdOfATag');

</script>

Я понимаю, что должен был сделать свою первоначальную цель более ясной. : S. Мне жаль, потому что я знаю, что это всегда вызывает путаницу :(. Огромное спасибо за все советы, которые вы мне дали. Теперь я вхожу в новый мир (по крайней мере для меня :)) jQuery:).

С уважением

Ответы [ 2 ]

1 голос
/ 20 февраля 2011

Расширение по ответу Гора.

Использование jQuery:

  $(req.responseText).find('div.classdef').text()

Использование split (без регулярных выражений), несколько загадочно:

req.responseText.split("<div class='classdef'>")[1].split('</div>')[0]
1 голос
/ 20 февраля 2011

exec метод возвращает массив.Первый (индекс 0) соответствует вашему совпадению, а второй (индекс 1) соответствует вашей группе.Вы должны взять из него второй элемент.

var mt = tag.exec(text);
alert(mt[1]);

и добавить косую черту к своему регулярному выражению.

Но синтаксический анализ html с регулярным выражением - очень хорошая плохая идея.Используйте что-то еще, например, jquery.

И помните, что вы не можете выдать XMLHttpRequest на сайт в другом домене.

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