0

関数内に次の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 構造を変更し (フィールドを設定しませんが、<NotUsed></NotUsed>渡す必要があります)、XML をシャッフルします。これは私の最初の問題/質問です。

望ましい構造は次のとおりです。

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

コンソールログに追加すると、上記の追加を使用してノードの値が変更されたように見えます。

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

ただし、渡されるデータは SQL テーブルに書き込まれるものではありません。これが 2 番目の問題です。コンソール ログでは、未定義または [オブジェクト オブジェクト] として表示されます。(変更された) テキストを表示できますが、明らかに xml 構造を適切に参照していません。これらのそれぞれで何が間違っていますか?

4

1 に答える 1

1

使用する

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

それ以外の

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

(他の部分も同様)。xmlドキュメントノードから始めると論理的な要素$msgXML.children(0)を参照しているようです。XMLInput

于 2013-05-14T19:38:14.627 に答える