使用javascript在ajax中发布数据时缺少字符

时间:2011-10-31 15:25:10

标签: javascript ajax post xmlhttprequest

我有一个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

2 个答案:

答案 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不会起作用,因为它会用十六进制表示替换空格,而不是加号。对不起混淆(脸红)