Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JQuery DOM对象作为XML发送到服务器_Javascript_Jquery_Xml_Ajax - Fatal编程技术网

Javascript 将JQuery DOM对象作为XML发送到服务器

Javascript 将JQuery DOM对象作为XML发送到服务器,javascript,jquery,xml,ajax,Javascript,Jquery,Xml,Ajax,在谷歌搜索了几个小时后,我仍然被这个问题困扰着。希望你们能帮我 我正在构建一个应用程序,允许用户为相册设计页面。它首先使用XML加载每个页面的标准格式。使用JQuery通过AJAX调用加载XML,如中所示: $.get('http://www.domain.com/ajaxcall.php', function(responseXML) { $xmlDoc= $(responseXML); )} XML文件现在作为对象加载,我可以对其执行JQuery方法,这减少了我的代码量 从用户端进

在谷歌搜索了几个小时后,我仍然被这个问题困扰着。希望你们能帮我

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

$.get('http://www.domain.com/ajaxcall.php', function(responseXML) {
    $xmlDoc= $(responseXML);
)}
XML文件现在作为对象加载,我可以对其执行JQuery方法,这减少了我的代码量

从用户端进行的编辑保存在$xmlDoc中。因此,当用户在页面上拖动照片时,新的Cordinate将保存为该照片的属性。完成所有用户编辑后,我想导出新的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>

测试

我不太确定它是否适用于XML,但适用于HTML是:

$('<div>').append($xmlDoc).html()
$('').append($xmlDoc.html())
我写了一个小提琴来演示我的解决方案:


试试看。

好的,将JavaScript对象序列化为XML并不是那么简单。GSerializer库对您很有用

或者,只需使用.HTML()就可以从附加了HTML的元素中获取HTML


这可以保存到数据库中

我找到了解决方案。我按如下方式调用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);

可能是我写的小提琴的复制品。。。looky looky;)
$xmlcontent = $GLOBALS["HTTP_RAW_POST_DATA"];
$handle = fopen($_SERVER["DOCUMENT_ROOT"].'/userfiles/xml/book.xml', 'wb');
fwrite($handle,$xmlcontent);
fclose($handle);