0

我目前正在向 servlet 发送 ajax 请求,并在此过程中丢失了一些信息。我关心的参数(丢失数据)是“评论”参数。下面你可以看到我的最后 4 行 ajax。

var params = "name=" + name + "&email=" + email + "&comment=" + comment + "&player_id=" + player_id;    
xmlhttp.open("POST", 'comment', true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send(params);

当我在发送之前和声明之后提醒我的参数时,它们看起来像这样:

name=Chris&email=email@gmail.com&comment=Hey, check this song out on groovershark http://grooveshark.com/#!/s/Here+feat+Soulive/2YDJIw?src=5&player_id=4

但是,在我的 servlet 中,如果我在得到注释参数后立即为它打印一行,我会得到以下输出:

Hey, check this song out on groovershark http://grooveshark.com/#!/s/Here feat Soulive/2YDJIw?src=5

问题是"+"标记在从 ajax 到容器的请求中消失了,我不知道为什么。我最终将它缩小到这个问题区域 b/c 我实际上直到在另一个堆栈溢出成员的帮助下一直在数据库连接中才注意到这一点。所以如果有人能让我知道我能做些什么来让我的"+"角色回来,我真的很感激!太感谢了!

4

2 回答 2

1

您应该在发送参数之前对其进行编码,如下所示:

encodeURIComponent(params);
xmlhttp.send(params);
于 2012-10-17T07:25:57.837 回答
0

您应该对 URI 的参数部分进行百分比编码: http ://en.wikipedia.org/wiki/Percent-encoding#Types_of_URI_characters

这样 + 变成 %2B 并且可以在服务器端正确解释。

查看 encodeURIComponent() 函数:http ://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

于 2012-10-17T07:20:38.293 回答