Как преобразовать ответ данных Ajax в строку? - PullRequest
1 голос
/ 20 июня 2011

Оригинальная версия:

<div>
    <p>
        <span>text</span>
    </p>
<div>

RegExp:

$.get('/some.html', function(data) {
    alert(data.replace(/<p.*p>/gi, ''));
});

После RegExp:

<div>
    <>
        <span>text</span>
    </>
<div>

Что мне нужно получить:

<div>

<div>

Ответы [ 4 ]

2 голосов
/ 20 июня 2011

Если вы хотите работать с возвращенным html, вам не следует делать это с помощью регулярных выражений.

Я не совсем уверен, что понимаю ваш вопрос, но похоже, что вы пытаетесь удалить элементы <p> из результата? Вы можете работать с возвращенным html с помощью jQuery, что-то вроде

$(data).remove('p');
2 голосов
/ 20 июня 2011

В Javascript нет режима точек, поэтому ваш . не соответствует символам новой строки.

но вы можете попробовать это

$.get('/some.html', function(data) {
    alert(data.replace(/<p[\S\s]*?p>/gi, ''));
});

[\S\s] означает совпадение с любым символом без пробела (\S) или любым символом пробела (\s). символы новой строки включены в символы пробела.

*? - это не жадное совпадение, это означает, что оно соответствует как можно меньшему количеству.

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

0 голосов
/ 20 июня 2011

Регулярное выражение Javascript не соответствует \ n с ".".И вы указали // g флаг.обычно используйте [\ s \ S] в javascript.

alert(data.replace(/<p[\s\S]*?p>/i, ''));
0 голосов
/ 20 июня 2011

если я вас правильно понял, то вам нужно что-то вроде этого ... но это сделает все div на вашей странице пустым div

 $('div').html('');

если вы хотите удалить конкретный div, тогда присвойте этому id идентификатор, а затем сделайте это следующим образом ..

$(data).find('#divID').html(' ');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...