编码 URL 中的加号 (+)

lan*_*ng2 1 xml url jquery flask

在 Web 应用程序中,我将 XML 文件的内容作为 URL 参数的一部分发送(可能不是最好的设计,但目前我仍坚持使用它)。所以地址看起来像这样:

http://localhost:5000/fill?xml=XXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

它是url_for('url', xml=xml)由 Flask 生成的。

我在客户端这样做:

  var img = document.getElementById('preview');
  var xmlstr = decodeURIComponent(GetURLParameter("xml"));
  var xml = $.parseXML(xmlstr);
Run Code Online (Sandbox Code Playgroud)

XML 文件的内容自然会被编码。但文件中的所有空格都转换为加号+。当我使用$.parseXML()函数对其进行解码时,它+仍然存在。

为什么?

Mar*_*ers 5

是的,当您将数据放入查询字符串时,它是URL 编码的;将空格转换为+正常;查询参数使用以下application/x-www-form-urlencoded形式进行编码。

decodeURIComponent()不处理这一差异;只需先用空格.replace()替换字符:+

var xmlstr = decodeURIComponent(GetURLParameter("xml").replace(/\+/g, " "));
Run Code Online (Sandbox Code Playgroud)

请参阅如何在 JavaScript 中获取查询字符串值?