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

Missing chars when posting data in ajax using javascript

本文关键字:数据 字符 javascript ajax 布数据 使用      更新时间:2023-09-26

我有一个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填充文本区域时,并运行JS代码。我在服务器端得到的"my_text"的值是abc 1 2 3

我怎么能改变JS代码得到正确的字符串abc +1 +2 +3在服务器端。

使用encodeURIComponent(my_text)准备提交的文本。此函数应始终用于参数,以正确转义字符。您已经经历过代码中断的情况。
不转义字符的另一个可怕的结果是当用户在字符串中使用&时,有效地创建了一个额外的参数。

xmlhttp.send("my_text=" + encodeURIComponent(my_text) + "&foo=1");

另一种选择是使用escape函数

xmlhttp。发送("my_text = " +逃脱(my_text) +",foo = 1");

您丢失了字符,因为+号是一个保留的HTTP字符——它的计算结果是一个空格(' ')。

EDIT:非常正确,转义在这种情况下不起作用,因为它将用十六进制表示替换空格,但不替换加号。对不起,我弄混了