我有一个textarea:
<textarea id="my_text"></textarea>
在javascript中有一些像这样的ajax代码:
var xmlhttp = new XMLHttpRequest();
var my_text = document.getElementById("my_text").value;
xmlhttp.open("POST", ".", true);
xmlhttp.send("my_text=" + my_text + "&foo=1");
当我用字符串abc +1 +2 +3
填充textarea时,运行JS代码。我在服务器端获得的“my_text”值为abc 1 2 3
。
如何更改JS代码以在服务器端获取正确的字符串abc +1 +2 +3
。
答案 0 :(得分:4)
使用encodeURIComponent(my_text)
准备提交的文字。此函数应始终用于参数,以正确转义字符。您已经遇到过代码中断的情况。
当用户在其字符串中使用&
时,会发生另一个不会转义字符的结果,这会产生额外的参数。
xmlhttp.send("my_text=" + encodeURIComponent(my_text) + "&foo=1");
答案 1 :(得分:0)
另一种选择是使用escape
功能。
xmlhttp.send(“my_text =”+ escape(my_text)+“&amp; foo = 1”);
你丢失了字符,因为+符号是一个保留的HTTP字符 - 它的结果是空格('')。
编辑:非常正确,在这种情况下,escape不会起作用,因为它会用十六进制表示替换空格,而不是加号。对不起混淆(脸红)