我在函数中有以下jQuery代码。
var msgXML = "<XMLInput><Source></Source><MessageText></MessageText><SendTime></SendTime><Destination></Destination><NotUsed></NotUsed></XMLInput>",
msgXMLDoc = $.parseXML(msgXML),
$msgXML = $( msgXMLDoc ),
$msgSource = $msgXML.find("Source"),
$msgText = $msgXML.find("MessageText"),
$msgSTime = $msgXML.find("SendTime"),
$msgDest = $msgXML.find("Destination");
在这个函数中,我需要对XML中的每个节点进行一些更改,完成后,将更改后的XML传递给ajax调用,该调用将XML作为SQL存储过程的输入。 / p>
在下面的代码中,我可以附加XML值
$msgXML.children(0).append($msgSource.text(mySource));
$msgXML.children(0).append($msgText.text(myMsg));
$msgXML.children(0).append($msgSTime.text(currTimeString));
$msgXML.children(0).append($msgDest.text(myDest));
但是它改变了XML结构(我没有设置字段<NotUsed></NotUsed>
但必须传递它)并且在XML周围改变。这是我的第一个问题/问题。
理想的结构是:
<XMLInput>
<Source></Source>
<MessageText></MessageText>
<SendTime></SendTime>
<Destination></Destination>
<NotUsed></NotUsed>
</XMLInput>
如果将节点放在控制台日志中,则使用上面的附加内容可能会更改节点的值:
console.log("Out = " + $msgXML.find("Source").text());
然而,传递的数据并不是写入SQL表的内容。这是第二个问题。在控制台日志中,它显示为undefined或[object Object]。我可以显示(更改过的)文本,但我显然没有正确引用xml结构。我对每一件事做错了什么?
答案 0 :(得分:1)
使用
$msgXML.find("Source").append(mySource);
而不是
$msgXML.children(0).append($msgSource.text(mySource));
(类似于其他部分)。 $msgXML.children(0)
似乎引用了XMLInput
元素,当您从xml文档节点开始时,该元素将是合乎逻辑的。