JQuery appendTo方法覆盖XML文档中的现有节点
从一个ajax调用中,我得到了如下响应JQuery appendTo方法覆盖XML文档中的现有节点,jquery,xml,Jquery,Xml,从一个ajax调用中,我得到了如下响应 <root> <node> <innerNode>value</innerNode> </node> $.ajax({ type:'GET', url: urlKat, async:false, success: function(d, textStatus, jqXHR){ alert(jqXHR.responseTex
<root>
<node>
<innerNode>value</innerNode>
</node>
$.ajax({
type:'GET',
url: urlKat,
async:false,
success: function(d, textStatus, jqXHR){
alert(jqXHR.responseText);
variableXML = $.parseXML(jqXHR.responseText);
testXML=$(variableXMLXML).find("innerNode").filter(":contains(value)").parent();
},
error: function(){
alert("ERROR");
}
});
testXML.find("innerNode").text(newValue);
variableXML.find("root).each(function(){
$(testXML).appendTo($(this));
});
这部分
testXML.find("innerNode").text(newValue);
variableXML.find("root).each(function(){
$(testXML).appendTo($(this));
您的代码和ajax代码将同时运行。
因为ajax调用需要几秒钟才能连接到服务器
你应该把这部分放在成功里面:
编辑:经过几个小时的工作,我终于意识到testXML不是重复的数据,而是通过引用指示对象。这意味着jQuery appendTo不会覆盖现有节点。当您运行此行时,它会发生更改-
testXML.find("innernode").text('newValue');
我也很困惑,但当我试着明智地思考时,它变得容易了。
无论如何,在进行任何更改之前,应该复制节点。
试着这样做:
testXML = $(variableXML)
.find("innernode")
.filter(":contains(value)")
.parent()
.clone(); //duplicate node before change value
并更改值
testXML.find("innernode").text('newValue');
最后附上它
请注意,您不需要使用“each”进行迭代。
jQuery将自动查找所有元素并将新元素附加到它们
希望它能帮助您:发布有问题的jQuery代码,或者您无法得到帮助:很抱歉。代码现在已经发布谢谢您的回答。但是我可以看到我有xml响应,并且我看到testXML变量接受一个值,这会不会因为ajax调用连接而发生?我会尝试一下…:那么我不认为这是由于连接的事情。你想得到什么,你实际上得到了什么?在我调用appendTo之后,我想得到类似这个值的东西NewValue,我得到的是newValue@kafrlust我终于明白了。我编辑了这篇文章。试着这样做:非常感谢你抽出时间!我现在正在尝试,虽然我还没有成功,但我仍在努力
$(testXML).appendTo($(variableXML).find("root"));