0

我正在尝试将字符串从我的站点发送到我的 Node.js 服务器,但是当收到它们时,由于某些原因,某些字符会丢失。

// Client:
microAjax("/foo?test="+encodeURI("this is ++ a test"), function callback(){});

// Server:
app.get('/foo',function(req,res){
    console.log(req.param("test"));
});

在这里,服务器上的两个“+”字符都丢失了。

4

1 回答 1

2

尝试encodeURIComponent而不是encodeURI. 这将为您%2B提供应该有效的加号。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

请注意,encodeURI 本身不能形成正确的 HTTP GET 和 POST 请求,例如 XMLHTTPRequests,因为“&”、“+”和“=”未编码,它们在 GET 和 POST 请求中被视为特殊字符。然而,encodeURIComponent 确实对这些字符进行了编码。这些行为很可能在浏览器中不一致。

于 2014-01-12T01:12:07.470 回答