2011-04-15 51 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() 

這可能是保存到數據庫中