将JQuery DOM Object作为XML发送到服务器

Bjo*_*orn 3 javascript xml ajax jquery

在谷歌搜索了几个小时后,我仍然坚持这个问题.希望你们能帮助我.

我正在构建一个应用程序,让用户可以为相册设计自己的页面.它首先使用XML为每个页面加载标准格式.使用JQuery通过AJAX调用加载XML,如下所示:

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

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>
Run Code Online (Sandbox Code Playgroud)

Bjo*_*orn 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');
        }
});
Run Code Online (Sandbox Code Playgroud)

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

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