【发布时间】:2012-12-07 00:31:36
【问题描述】:
我正在提交一个表单并获取通过 jQuery ajax 在表中返回的数据。表中的一个 td 中有 xml,我需要对其进行格式化。我可以让它显示在我的页面上,但它似乎只是文本,没有 xml 标签。我正在处理一些遗留代码,没有太多回旋余地。
返回的 HTML
<table border=1>
<tr>
<td>Field Name</td>
<td>Field Value</td>
</tr>
<tr>
<td>SuccessFlag</td>
<td>True</td>
</tr>
<tr>
<td>ResponseMessage</td>
**<td><?xml version="1.0" encoding="utf-16"?>**
<License>
<CustomerID>Bob</CustomerID>
<License>XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX</License>
<Log>Created by lt@email.com on December 6, 2012, 1:09 pm Cancelled by b@email.com on December 6, 2012, 1:09 pm</Log>
<ExpirationDate>2012-12-06</ExpirationDate>
</License>
</td>
</tr>
粗体线是表中的第 5 个 td 将始终具有我需要的 xml。使用下面的代码,它只是将文本转储到 div 中,我需要根据它的 xml 标签对其进行格式化,我不确定我的解析是否正常。
$("#ButtonID").live('click',function(){
$("#FormID").validate({
//are the errorContainer's helping here?
errorContainer: "#responseDiv",
errorLabelContainer: "#responseDiv tr",
wrapper: "td",
//are the errorContainer's helping here?
submitHandler: function(form) {
var dataString = $(form).serialize();
$.ajax({
type: $(form).attr('method'),
url: form.action,
data: dataString,
clearForm: true,
success: function(data) {
var answer = $(data).find("td:eq(3)").text();
var message = $(data).find("td:eq(5)").html();
var xmlDoc = $.parseXML( message );
var $xml = $( xmlDoc );
if (answer==="True") {
$xml.each(function(){
$('#resultGenerate').show().html($(this).text());
});
} else {
$('.processing').hide();
$('input[type="text"], input[type="password"]').val("");
$('#resultGenerate').show().html('<ul><li>' + answer + '</li><li>' + message + '</ul>');
}
}
});
return false;
}
});
});
【问题讨论】:
-
你期待什么输出?
-
它返回的文本用空格分隔
标签。我可以让它输出到我想要的 div,但它只是未格式化的文本。我需要弄清楚如何将返回的 xml 的部分附加到 div 中,以便我可以设置它的样式或至少添加结构
标签: jquery xml xml-parsing