【问题标题】:Modifying XML using Ajax?使用 Ajax 修改 XML?
【发布时间】:2012-11-29 14:45:08
【问题描述】:

如何使用 JavaScript/Ajax 修改 XML 文件中的值?

我可以使用 Ajax 打开 XML 文件,并在我的脚本中使用它的值,但现在我想使用 Ajax 将我的脚本所做的更改发送回服务器上的 XML 文件。

我认为这应该是可能的,但我找不到可以学习的例子。我遵循了很多教程(也来自http://lynda.com),但通常他们使用来自 XML 的数据并且他们不会更改它。

我不喜欢使用其他语言,因为它是一个非常简单的脚本和 XML 文件,只包含 4 个字段。

【问题讨论】:

  • 您是想在客户端使用 Javascript 还是在服务器端使用某种服务器端编程语言对其进行修改?
  • xml 文件在服务器上。我可以阅读它抛出 ajax 并将我需要的值放入带有 javascript 的数组中,这样就可以在客户端了。更改 javascript 中的值后,我想将新值发送到服务器。我可以用ajax做到这一点吗?所以我实际上需要更改服务器端的文件。

标签: javascript xml ajax


【解决方案1】:

使用 javascript,您可以更改所需节点的 xml 值及其属性。

首先,您需要通过 getElementbyname 或使用 javascript xquery 从 xml 中获取所需的节点。

例如从链接http://www.w3schools.com/xml/default.asp检查xml

假设我有值 xml_item = 有那个 xml。

就像我想更改标签的值。 然后我这样做是为了改变价值。 var element_to = xml.getElementsByName('To')[0]; //要改变它的值,首先检测borwser是否是IE,然后使用 element_to.text = "你的新价值" //如果不是,即使用。 element.to.textContent = "你的新值";

//如果你想改变元素的属性值,你需要这样做。 element_to.setAttribute("attibute_name","new_value");

希望你能理解。

【讨论】:

  • 感谢回复。这是否也将新值更新到服务器?因为您设置了新值但不将它们发送到服务器。这就是我现在的问题...我可以更改值,但无法更新服务器上的 xml..
  • 使用 javascript 函数“XMLHttpRequest”将 xml 请求发送到服务器,如果该答案帮助您将其标记为正确答案。谢谢
  • 类似这样的东西 request.open("GET", "files/fruit.xml", true); request.send(null); request.onreadystatechange = function() { if (request.readyState == 4) show(request.responseText.length); };
【解决方案2】:

以下是使用 javascript 将 xml 发送回服务器端的方法:

jQuery.post( 
    url, 
    xml_as_string, 
    success( data, textStatus, jqXHR){

    }, 
    "xml"
);

您可以使用 DOMParser 在 javascript 中访问 XML

http://www.erichynds.com/jquery/working-with-xml-jquery-and-javascript/

// the correct way to use jQuery w/ XML
// also see http://gist.github.com/553364 for a normalized DOMParser

var 
   // XML string
   xmlString = '<wu_tang><member name="Method Man" /></wu_tang>',

   // DOM parsing object
   parser = new DOMParser(),

   // XML DOM object
   xmlObject = parser.parseFromString(xmlString , "text/xml");

// this is WRONG.  It works, but you're not on an XML DOM
$( xmlString ).find("member").attr("name"); // -> Method Man

// the correct way
$( xmlObject ).find("member").attr("name"); // -> Method Man

// in XHR requests the parsing is automatically done for you by
// the browser.  jQuery passes it into the success callback
$.ajax({
   dataType: 'xml',
   url: 'wutang.xml',
   success: function( XMLObject ){

      // OMG
      $( xmlObject ).find("member").attr("name"); // -> Method Man
   }
});

【讨论】:

  • 感谢您的回复..我现在像这样工作了.. $.ajax({ type : "GET", url : "players.xml", dataType : "xml", success : function (xmlData){ $(xmlData).find("player1").each(function() { //$("#testing").append($(this).find("name").text()) ; var naamTest = $(this).find("name").text(); $("#testing").html(naamTest); }); }, error : function(){ alert("无法检索XML 文件。"); } });现在我想更改 naamTest 的值并将其发送回服务器上的 xml 文件......你知道我该怎么做吗?谢谢
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2019-11-28
  • 2013-11-07
  • 2012-05-01
相关资源
最近更新 更多