2012-03-01 70 views
3

我需要从我的网站发送大量信息到我的网络服务器。这些信息包含来自多个用户的数据(名字,姓氏等)。用jQuery组织数据XML

在我将这些信息发送到网络服务器的AJAX请求之前,我必须将它们从表格中提取出来并以某种方式组织它们。

现在我正在考虑两种不同的可能性:

1:组织用JavaScript/jQuery的XML文档中的数据并将其发送到Web服务器或...

XML文档

<create> 
    <customer> 
     <first-name>foo</first-name> 
     <last-name>bar</last-name> 
     ... 
    <customer> 
</create> 

2:将数据存储在字符串中,稍后使用PHP将其组织到Web服务器上。

字符串:

"first-name='foo';last-name='bar'" 

我已经尝试过这个创建XML文档...

var xmlDocument = $.parseXML('<create/>'); 
    var customer = xmlDocument.createElement('customer'); 
    xmlDocument.documentElement.appendChild(customer); 
    var firstName = xmlDocument.createElement('first-name'); 
    xmlDocument.documentElement.appendChild(firstName); 

...但它并没有真正的工作了。我使用xmlDocument.find('first-name')来检查它是否正确构建,但失败。也许我正在访问错误的XML文档。

我也试图使用jQuery.parseXML();,但它也没有工作。

那么,在JavaScript/jQuery中创建/访问XML文档,创建/删除/编辑节点和文本节点以及设置/获取属性的正确方法是什么?

你能给我一个建议使用其中提到我的机会?也许还有一个我还没有考虑过。如果你可以添加一些示例代码,我会很感激。

回答

2

你应该这样做

var xmlDocument = $('<create/>'); 
var customer = $('<customer/>'); 
xmlDocument.append(customer); 
var firstName = $('<first-name/>').text('john'); 
xmlDocument.append(firstName); 

相应的XML:

<create> 
    <customer></customer> 
    <first-name>john</first-name> 
</create> 

这里找到http://jsfiddle.net/YpfmD/

元素xmlDocument.find('first-name').text()摆弄这就是你如何创建HTML元素(后所有的HTML是一种XML)

如果宇需要创建属性要素,你可以做

$('<name/>', { first: "john", second: "doe"}); 
//this creates <name first="jhon" second="doe"></name> 
+0

如何访问节点并获取值? – 2012-03-01 09:40:14

+0

@ sebbl.sche justdo'xmlDocument.find('first-name')。text()'(我更新了我的答案) – 2012-03-01 09:46:13

0

你为什么不能创建使用服务器端脚本,如PHP字符串(XML或其他)?这种方式更容易。

但是如果你需要使用jquery/JavaScript的,我建议你去的JSON的方法。

看一看这里:

jquery .serializeArray()

jquery .parseJSON

你可以试试这个?

+0

是否有可能将多个用户存储在JSON对象中?例如:'var obj = $ .parseJSON('{“user1”:{“first-name”:“foo”,“last-name”:“bar”},“user2”:...}'); ' – 2012-03-01 09:47:39

+0

JSON只是您可以想到的几乎任何类型的对象的字符串表示形式。对于XML而言,它将XML数据存储在一个定义良好的结构中,这使得人们可以很容易地从中再次提取信息。它在Ajax界也非常流行,因为大部分时间它占用的空间比XML少。去阅读一下,并玩弄它。 – 2012-03-01 09:50:51