2015-07-28 79 views
0

在Web應用程序中,我將XML文件的內容作爲URL參數的一部分發送(不是最好的設計,但現在我堅持使用它)。因此,地址如下:在已編碼的URL中加號(+)

http://localhost:5000/fill?xml=XXXXXXXXXXXXX 
這與 url_for('url', xml=xml)從瓶產生

而且我在客戶端上這樣做:

var img = document.getElementById('preview'); 
    var xmlstr = decodeURIComponent(GetURLParameter("xml")); 
    var xml = $.parseXML(xmlstr); 

自然的XML文件的內容將得到編碼。但文件中的所有空格都轉換爲加號+。當我使用$.parseXML()函數對它進行解碼時,+仍然存在。

爲什麼?

+0

你是如何編碼的XML? –

+1

首先解碼URL參數,然後使用'parseXML' –

+0

@MilindAnantwar URL由燒瓶準備。我已經加入了這個問題。 – lang2

回答

1

是的,當你把數據在查詢字符串是網址編碼爲;將空格轉換爲+是正常的;查詢參數使用application/x-www-form-urlencoded form進行編碼。

decodeURIComponent()並不處理那一個區別;只需使用.replace()先用空格來代替+字符:

var xmlstr = decodeURIComponent(GetURLParameter("xml").replace(/\+/g, " ")); 

How can I get query string values in JavaScript?

+0

我希望它會是%20。 – lang2

+0

@ lang2:不行,查詢參數很奇怪。 –

-1

我會先編碼XML的網址:

http://localhost:5000/fill?xml=encodeURIComponent(XXXXXXXXXXXXX) 

,並在另一邊解析XML之前對其進行解碼:

decodeURIComponent() 
+0

已經做到了。更新的問題。 – lang2

+0

Flask已經編碼了URL參數(並且在Python中這樣做,而不是JavaScript),這就是爲什麼OP首先看到這些「+」字符的原因。 'decodeURIComponent()'不處理查詢參數和路徑組件之間的區別。 –