在Ajax调用中传递包含空格的值

时间:2010-09-23 00:37:51

标签: php javascript ajax xmlhttprequest

尝试传递空格以及ajax调用。

'word'的传递方式与'word'相同。我相信。

另一方面,需要通过电话完全发送两个字。

'word second'但不一样 '第二个字'

我应该在通话前修剪还是在服务器端脚本上执行此操作? 我怎样才能发送空格?

3 个答案:

答案 0 :(得分:4)

要允许参数包含空格等,您需要使用javascript escape() [W3Schools]函数。

escape( 'hello world ' ) = 'hello%20world%20';

PHP端的处理将自动解码/取消该参数,恢复空格(以及通过AJAX发送时不能作为参数值的一部分的任何其他字符,例如“=”或“&”。

在PHP中,如果您想要删除任何前导或尾随空格,可以使用PHP trim() [PHP.net]函数。

trim( 'hello world ' ) = 'hello world';

答案 1 :(得分:1)

我知道这是一个老问题,但我想指出,接受的答案是建议从JavaScript 1.5版开始弃用的函数。

相反,您应该使用encodeURI()encodeURIComponent()来发送空格和其他特殊字符。

var param = encodeURIComponent("word second "); 
console.log(param); // outputs 'word%20second%20'

另一端的PHP将自动处理解码。这使您可以自由地修剪最实用的空间。如果它在技术上并不重要,我会使用trim()函数修剪JavaScript代码中的空格,因为它可以节省一点点网络带宽,并通过修剪客户端来略微减轻服务器负载。

答案 2 :(得分:0)

我认为最简单的方法是在发送xmlhttprequest之前在javascript中 encodeURIComponent 字符串,然后 urldecode 它在PHP中