2011-06-20 37 views
1

原始版本:如何将Ajax数据响应转换为字符串?

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

正则表达式:

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

正则表达式后:

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

什么我需要得到:

<div> 

<div> 
+3

我不认为这个问题的标题反映了问题的内容。 –

回答

2

JavaScript有没有DOTALL模式,使您的.不匹配换行符。

,但你可以试试这个

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

[\S\s]手段匹配任何非空白(\S)或任何空白(\s)字符。换行符包含在空格字符中。

*?是一个非贪婪的匹配,意味着它匹配尽可能少。

只要标签嵌套,使用正则表达式时就会遇到问题。你必须意识到这一点。可能来自@fearofawhackplanet的解决方案是更好的选择。

+0

所以,我想解析ajax响应像这样的字符串: http:// jsfiddle。net/DgejB/ – Algorithm

0

如果我正确了你,那么你需要的是这样的......但它将使所有的div在页面为空白格

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

,如果你想删除特定的div然后给一个ID到该分区,然后做这样的..

$(data).find('#divID').html(' '); 
+0

认为他想改变它,然后显示内容,但显示然后改变也将实现预期的正确。 – Balanivash

+0

我需要将ajax数据转换为字符串,并像往常一样使用字符串来解析 – Algorithm

+0

@ Balanivash - 只要看看他的最后一点 - 他只想要一个没有innerHTML的div ..正如他在他的问题中指出的那样 – Vivek

2

如果你想返回的HTML工作,那么你不应该做的是通过正则表达式。

我不完全确定我理解你的问题,但看起来你正试图从结果中删除<p>元素?您可以使用jQuery返回的HTML,一些工作就像

$(data).remove('p'); 
0

Javascript regexp与\“n”不匹配。并且你指定了// g标志。在正常情况下,在javascript中使用[\ s \ S]。

alert(data.replace(/<p[\s\S]*?p>/i, '')); 
+0

,你应该指定“?”为最小匹配。 :) – mattn

相关问题