【问题标题】:jQuery - changing XML & passing it (changed) to a functionjQuery - 更改 XML 并将其(已更改)传递给函数
【发布时间】:2013-05-14 18:28:34
【问题描述】:

我在函数中有以下 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 存储过程的输入。

在下面的代码中,我可以附加 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 结构(我没有设置字段 &lt;NotUsed&gt;&lt;/NotUsed&gt; 但必须传递它)并在 XML 周围随机播放。这是我的第一个问题/问题。

所需的结构是:

<XMLInput>
<Source></Source>
<MessageText></MessageText>
<SendTime></SendTime>
<Destination></Destination>
<NotUsed></NotUsed>
</XMLInput>

如果我把它放在控制台日志中,使用上面的附加似乎会改变节点的值:

console.log("Out = " + $msgXML.find("Source").text());

但是,传递的数据并不是写入 SQL 表的数据。这是第二个问题。在控制台日志中,它显示为未定义或 [object Object]。我可以显示(更改的)文本,但我显然没有正确引用 xml 结构。我在这些方面做错了什么?

【问题讨论】:

    标签: jquery sql xml parsexml


    【解决方案1】:

    使用

    $msgXML.find("Source").append(mySource);
    

    而不是

    $msgXML.children(0).append($msgSource.text(mySource));
    

    (其他部分类似)。 $msgXML.children(0) 似乎指的是 XMLInput 元素,当您从 xml 文档节点开始时,这将是合乎逻辑的。

    【讨论】:

    • 感谢您的帮助。我按照你说的去做,最终得到了我需要的原始 XML 从 $msgXML.children(0).get(0).outerHTML 传递给另一个函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2015-09-24
    • 2015-08-16
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多