Javascript Mootools请求对象不允许我拥有'+';我的查询字符串中的符号

Javascript Mootools请求对象不允许我拥有'+';我的查询字符串中的符号,javascript,mootools,request,Javascript,Mootools,Request,我有以下Javascript/Mootools代码: var str = self.tI.get('value').replace(/\s/g,'+'), data = 'action=getplaces&str=' + str + '&latLng=' + $('coords').get('value'), r = new Request({ url: 'action.php', method: 'get', li

我有以下Javascript/Mootools代码:

var str = self.tI.get('value').replace(/\s/g,'+'),
    data = 'action=getplaces&str=' + str + '&latLng=' + $('coords').get('value'),
    r = new Request({
        url: 'action.php',
        method: 'get',
        link: 'cancel',
        onSuccess: function (response) {
            /* Do Stuff */
        }
    }).send(data);
console.log(str);
在第一行,我将所有空格替换为+符号。当我在控制台中记录str的值时,我会得到相应的值(即:“blabla+bla”)

但是,当我发送请求时,请求失败。如果我查看标题和查询字符串,只需将+符号再次替换为空格(即:“blabla bla”)


怎么回事?有办法解决吗?

您需要转义plus,因为它是HTML Url中的保留字符
将其替换为
+

对于任何想知道的人来说,我的问题最终是服务器端。数据到达服务器端后,我试图将其合并到另一个URL中,但服务器已经将%20和+'解析为空格。因此必须在服务器端执行一些字符串操作。

尝试对str进行如下URL编码:
str=encodeURIComponent(str)。哦,还有一件事,为什么要用“+”替换空格?为什么不也用uri编码来编码这些空间呢?还有一件事,您可以说您查看了请求标题。您是从服务器还是从客户端执行此操作?如果它在服务器上,这可能只是意味着服务器已经将+解析为空格(我知道在某些情况下可能会发生这种情况)。@Alxandr:Client-side。只需打开Chrome/Firefox网络面板。同时检查服务器端。可能是Firebug面板显示了未解析的字符串。当我尝试你的代码时,至少在请求url中有一些优点。你可以让它自动为你做。在请求选项中包括
数据:{action:“blah”,str:str,foo:$(“bar”).get(“value”)}
,然后只执行do.send();