2012-10-25 86 views
0

我有一個看起來像這樣的形式:如何使用JQuery將HTML表單數據寫入XML?

<form method="post" id="aodform"> 
<label for="a">Animal:</label> 
<input class="input" type="text" name="a"/> 
<label for="s">Sausage:</label> 
<input class="input" type="text" name="s"/> 
<label for="g">Bird:</label> 
<input class="input" type="text" name="g"/> 
<label for="d">Dessert:</label> 
<input class="input" type="text" name="d"/> 
<input id="submitter" type="submit"/> 
</form> 

我需要輸入值的形式和覆蓋(替換)對應節點的文本值中,看起來像這樣一個現有的XML文件:

<aod> 
<animal>x</animal> 
<sausage>x</sausage> 
<bird>x</bird> 
<dessert>x</dessert> 
</aod> 

現在,我知道我可以使用

$("#aodform").submit(); 

實現形式,Jquery的提交,但在這之後我迷路了!我試圖找出如何獲得這些表單值,將它們作爲變量存儲在函數中,然後寫入XML文件(全部在Jquery中)。

我在谷歌搜索框中搜索了所有內容,發現了類似的主題,但並不足以幫助我的情況。有人請幫助我嗎?謝謝!

P.S.我不能使用任何服務器端語言,比如PHP,否則我會。

+0

你看過嗎? HTTP://計算器。com/questions/4913798/jquery-convert-serialized-form-inputs-to-xml-string –

+0

它非常相似,但我已經有了一個現有的XML文件。我不想寫一個新的。 – Spartacus

回答

3

由於安全考慮,您將無法使用javascript/jquery創建或編輯本地XML文件。想象一下,去一個網站和網站管理員寫了一些代碼,誰知道什麼,並將其放在您的計算機上的文件...

使用JavaScript寫入本地文件的唯一方法是使用Cookie或HTML5 localStorage

localStorage將允許您存儲字符串鍵和數組值和/或屬性名稱和值的對象。

如果您需要XML文件,您必須調用服務器端腳本,該腳本有權在服務器上編寫文件,然後您可以通過它的url訪問該文件。

1

客戶端的jQuery和Javascript無法保留到服務器端。它無法寫入代碼。您必須獲得服務器端語言的訪問權限,或者使用一些基於雲的服務(例如,您可以通過JavaScript API調用,持久保存到Amazon 3S或MongoDB或其他類似的服務)雲服務)。

雖然您可以使用Javascript/jQuery在客戶端構建一個XML對象,然後您必須將其提交給某個服務器端腳本以將其保存到文件中。

對不起,壞消息的持有者,但你需要進入一個更全面的功能,如果你想能夠做到這一點。

+0

我不一定同意這一點。我可以通過AJAX請求客戶端訪問XML文件。 我可以通過PHP來做到這一點,沒有問題,但我不能在這種特殊情況下使用PHP。 – Spartacus

+0

當你說「我可以通過AJAX請求客戶端訪問XML文件」時,你正在說讀取訪問權限。如果你想堅持下去,你必須寫入該文件,如果沒有服務器端技術處理事務,客戶端(運行在某人的遠程機器上的網絡瀏覽器)通常無法完成該文件。 –

0

你要隱藏的輸入內發送標籤等:

<form method="post" id="aodform"> 
<label for="a">Animal:</label> 
<input type="hidden" name="a_label" value="Animal"/> 
<input class="input" type="text" name="a"/> 
<label for="s">Sausage:</label> 
<input type="hidden" name="s_label" value="sausage"/> 
<input class="input" type="text" name="s"/> 
<label for="g">Bird:</label> 
<input type="hidden" name="g_label" value="bird"/> 
<input class="input" type="text" name="g"/> 
<label for="d">Dessert:</label> 
<input type="hidden" name="d_label" value="dessert"/> 
<input class="input" type="text" name="d"/> 
<input id="submitter" type="submit"/> 
</form> 

,然後在PHP訪問對:

$name = "a"; // "s", "g", "d" 

$tag = $_POST[$name.'_label']; 
$value = $_POST[$name]; 
$xml_element = "<$tag>$value</$tag>"; 

OR

使用相同的名稱,標籤,然後使用:

foreach($_POST as $key => $value)  
{ 
    $xml_element = "<$key>$value</$key>"; 
    ... 
} 
+0

我不能使用PHP來解決這個難題。謝謝你。 – Spartacus

+1

好的,但是你需要在服務器端使用某些東西,或者在javascript中使用所有東西,沒有其他選擇。 – SlovaN

相關問題