解析ajax调用后收到的标记?

时间:2010-10-03 10:53:28

标签: jquery html

我正在对服务器端函数执行ajax调用,该函数返回仅由两个DIV组成的html响应,例如

<div id="divOne">text on divOne</div>
<div id="divTwo">text on divTwo</div>

我可以解析标记响应以仅提取DIV中包含的文本部分吗?

2 个答案:

答案 0 :(得分:3)

如果您的success回调(比如function(data) {}),您可以将返回的数据用作context来查看,例如:

success: function(data) {
  //if these elements are nested down in a response, in another element
  var combinedText = $("#divOne, #divTwo", data).text();
  //if your response contains *only* these elements
  var combinedText = $(data).text();
  //of again if it contains *only* these elements and you want to filter which
  var combinedText = $(data).filter("#divOne").text();
}

格式只是$("selector", context),无论您的理想选择器是什么。

如果您的回复仅包含 问题中的内容,并且它们是根级别元素,则需要.filter()代替...... $("selector", context)在内部是$(context).find("selector"),它不会在返回的数据中找到根级别的任何元素。


或者,如果你专门使用.load(),你可以在末尾使用选择器来获取整个元素,如下所示:

$("#something").load("myPage #elementToGet");

答案 1 :(得分:1)

您可以使用此正则表达式删除html标记,只留下您需要的数据:

 String noHTMLString = htmlString.replaceAll("\\<.*?>","");

你会得到

inputString.split('\n')  # --> ['Line 1', 'Line 2', 'Line 3']

这与上面的相同,但不推荐使用字符串模块的功能,应该避免使用:

导入字符串

string.split(inputString, '\n')  # --> ['Line 1', 'Line 2', 'Line 3']

或者,如果您希望每一行都包含中断序列(CR,LF,CRLF),请使用带有 True 参数的 splitlines 方法:

inputString.splitlines(True)  # --> ['Line 1\n', 'Line 2\n', 'Line 3']

如果您需要更多帮助,希望这有帮助,请告诉我。

PK