我使用$.ajax
作为JSON对象从数据库返回数据。其中一个字段是有效的XML(已存储在SQL Server的XML字段中)。当我使用$.parseXML
提取XML数据时,在IE(版本9)中一切都很好,但在Firefox或Chrome中没有任何乐趣。
我想我可能需要做两个单独的查询,其中一个只是基于Google搜索将contentType作为text / XML返回XML数据。目前$.ajax
中的returnType是JSON,而.ashx处理程序文件中的contentType是(是的,它是ASP应用程序)。
有人能在这里提供一些见解吗?
提前致谢, 大卫
样品:
function ParseXMLRecord(record) {
var xmlDoc = $.parseXML(record);
var $xml = $(xmlDoc);
var Questions = $xml.find("Question");
for (var x = 0; x < Questions.length; x++) {
var test = Questions[x];
for (var t = 0; t < Questions[x].childNodes.length; t++) {
if (Questions[x].childNodes[t].tagName == 'Response') {
var controlId = '', value = '';
for (var g = 0; g < Questions[x].childNodes[t].childNodes.length; g++) {
var tagname = Questions[x].childNodes[t].childNodes[g].tagName;
if (tagname === 'Control') {
fails on firefox --> controlId = Questions[x].childNodes[t].childNodes[g].text;
...
=============================================== =======================================
让我问这是一种不同的方式。这是我需要解析的XML:
<ResponseSet>
<Question>
<Text>Laterality</Text>
<Response>
<Control>rbLateralityLft</Control>
<Value>Left</Value>
</Response>
</Question>
等...
基于以上所述,此行不适用于Firefox:
controlId = Questions [x] .childNodes [t] .childNodes [g] .text; //也不是这个 - &gt;问题[X] .childNodes [T] .childNodes并[g] .nodeTypedValue
答案 0 :(得分:2)
如果您使用jquery来解析XML,那么也可以使用jquery读取已解析的数据,例如:
var s = "<ResponseSet> <Question> <Text>Laterality</Text> <Response> <Control>rbLateralityLft</Control> <Value>Left</Value> </Response> </Question><Question> <Text>Laterality2</Text> <Response> <Control>rbLateralityLft2</Control> <Value>Left2</Value> </Response> </Question></ResponseSet>";
var x = $.parseXML(s);
$.each($(x).children().children(), function (idx, data) {
var questionText = $(data).find("Text").text();
var control = $(data).find("Control").text();
var value = $(data).find("Value").text();
console.log(questionText + " - " + control + " - " + value);
});