Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery appendTo方法覆盖XML文档中的现有节点_Jquery_Xml - Fatal编程技术网

JQuery appendTo方法覆盖XML文档中的现有节点

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

从一个ajax调用中,我得到了如下响应

<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"));