是否可以使用jquery $ .ajax添加,删除xml节点?
我想删除一些节点或在xml中使用jquery添加一些节点,我尝试使用append
, empty
, remove
但是所有这些节点似乎都不起作用,如( $ .ajax ):
success:function(xml){ $(xml).find("layout").append(''); $(xml).find("layout").empty(); }
我也发现谷歌没有教程。 所以我想知道是否可以使用jquery在xml中添加或删除节点?
好的,我详细写了 ,xml文件只保存在本地域中,因为这里的Database / UserConfig / config.xml是我的Ajax代码 :
function layout_change() { var $children=$input.children(); $.ajax({ type: "get", url: "Database/UserConfig/config.xml", dataType: "xml", timeout: 2000, beforesend:function(xml){ $(xml).find("layout").empty(); }, success:function(xml){ for(var i=0;i<$children.length;i++) { $(xml).find("layout").append(''); } }, error:function(){} }); }
或者它可以用javascript完成?或者只能用C#这样的服务器语言来完成?……
这是我的demo xml:
jQuery是一个用于在javascript中解析和操作XML的绝佳工具。 事实上,jQuery的ajax API是基于这个构建的,这就是为什么你能够通过将dataType
参数设置为xml
来指定ajax调用的响应类型的原因(尽管如果这个参数确实会尝试进行一些自动检测)被省略)。 从dataType
参数的jQuery $.ajax()
文档:
“xml”:返回可以通过jQuery处理的XML文档。
您可以使用jQuery尽可能多地解析和操作XML。 我必须补充说,与服务器端XML库中的XPath查询相比,使用CSS选择器是很好的。
虽然是empty
并且按预期remove
工作,但是在使用append
:jQuery等函数添加节点时会出现问题,无论出于何种原因(我还没有真正挖掘过这个),在添加到元素时不会为你创建元素XML结构(虽然这在HTML结构中工作正常)。 您可以通过自己显式创建节点作为DOM元素或jQuery对象然后调用append
轻松解决这个问题:
//Either of these will work var elem = document.createElement('app'); xml.find('layout').append(elem); // Appends to xml.find('layout').append($('')); // Does the same // You can also you use other manipulation functions such as `attr` xml.find('layout').append($(' ').attr('id', 'ego'));
但是,您的代码看起来还有其他问题会阻止它按预期运行。 例如, $.ajax
beforeSend
回调将XMLHttpRequest
对象传递给回调函数,而不是要操纵的XML对象。 结果是你在该回调中的空调不执行任何操作。
此外,如果您试图在beforeSend
回调中操纵Database/UserConfig/config.xml
的响应,那么它可能不会存在,因为在关闭ajax请求之前调用beforeSend
。 你打算传入的xml
参数可能是全局范围的,但它在回调范围内被压扁,因为jQuery正如我前面提到的那样传入XMLHttpRequest
。