2011-04-15 46 views
3

在Google上搜索几个小时后,我仍然遇到了这个问题。希望你们能帮助我。发送JQuery DOM对象作为XML到服务器

我正在构建一个让用户为相册设计页面的应用程序。它首先使用XML为每个页面加载标准格式。 XML是通过使用JQuery AJAX调用加载为:

$.get('http://www.domain.com/ajaxcall.php', function(responseXML) { 
    $xmlDoc= $(responseXML); 
)} 

的XML文件现在被加载作为一个对象,我可以对其执行jQuery方法,从而降低了对我的代码量。

从用户端编辑保存在$ xmlDoc中。因此,当用户在页面上拖动照片时,新的坐标被保存为该照片的属性。完成所有用户编辑后,我想导出新的XML并将其保存到服务器。这是我的问题开始的地方。由于我已经将XML作为JQuery对象加载(使用$(responseXML)),因此我无法再将它导出为XML文件。我通过调用$ .isXMLDoc($ xmlDoc)来检查它,它的响应是false。

由于将XML转换为对象非常容易,我想必须有一种方法可以做到这一点。对此有何想法?从原始文件

XML:

<pages> 
<page bgcolor="0099cc" titlecolor="f8f8f8" subtitlecolor="000000"> 
    <title>test</title> 
    <subtitle></subtitle> 
    <photo id="458267411204" name="" picture="http://www.domain.com/picture.jpg" height="540" width="720" x="25" y="0"> 
    <creator id="712241204" name=""/> 
    </photo> 
</page> 
</pages> 
+0

可能重复[如何序列化的通用JavaScript对象到XML](http://stackoverflow.com/questions/837577/how-to-serialize-a-generic-javascript-object-to-xml) – 2011-04-15 07:07:42

回答

5

我找到了解决方案。我发出Ajax调用,如下所示:

$.ajax({ 
    url: "http://www.domain.com/ajaxcall.php"?, 
     type: "POST", 
     contentType: "application/xml", 
     processData: false, 
     data: $xmlDoc.context, 
     success: function(data) { 
     alert('success'); 
     } 
}); 

然后在ajaxcall.php我处理文件并将其保存到服务器:

$xmlcontent = $GLOBALS["HTTP_RAW_POST_DATA"]; 
$handle = fopen($_SERVER["DOCUMENT_ROOT"].'/userfiles/xml/book.xml', 'wb'); 
fwrite($handle,$xmlcontent); 
fclose($handle); 
1

我不太确定它是否可与XML,但与HTML是剂量:

$('<div>').append($xmlDoc).html() 

我写了一个小小提琴证明我的解决方案: http://jsfiddle.net/scheffield/3RhhF/

试试看。

+0

不幸的是,没有... – Bjorn 2011-04-15 07:46:48

+0

要坏。你能提供一个XML文档的例子吗?只是一个短... – scheffield 2011-04-15 07:51:24

+0

已被添加到问题 – Bjorn 2011-04-15 08:03:37

0

ok将JavaScript对象序列化为XML并不那么简单。该GSerializer库可以使用你
It can be found here

,或者你应该能够得到元素的HTML到它是由刚刚使用html的()附加

$(".div").html() 

这可能是保存到数据库中