使用javascript在ajax中发布数据时缺少字符
Missing chars when posting data in ajax using javascript
我有一个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:非常正确,转义在这种情况下不起作用,因为它将用十六进制表示替换空格,但不替换加号。对不起,我弄混了
相关文章:
- 元素的内容必须由格式正确的字符数据或标记组成
- 如何在没有额外空格的情况下从MySQL中检索字符数据
- 如果两个跨度有数据,则添加字符
- jQuery:从数据属性中删除除前4个字符外的所有字符
- 带有特殊字符的InnerHTML正在修剪数据
- 数据表求和行以支持字符
- 谷歌可视化数据分组字符串列
- 如何将二进制数据映射到javascript中的字符
- 谷歌分析实验导致格式良好的字符数据或标记错误
- 如何转义ajaxed数据中的特殊字符
- 如果数据存在Javascript,则剩余字符
- d3.js和加载具有特殊字符的数据
- 具有中文字符但输出的JSON.parse数据变为“;未定义”;
- 用Javascript替换从JSON中获取的数组数据特殊字符
- CSS 为 JSON 数据添加两行字符
- 如何以基于字符的编码发布二进制 html 多部分表单数据
- 如何使用 jQuery 发送包含特殊字符的查询字符串数据
- JS正则表达式在数据表中用连字符匹配整个单词
- 从 jquery/javascript 中字符串的第一个字符过滤表数据
- 错误:“JSON.parse:JSON 数据第 1 行第 1 列的意外字符”,当包含其他 php 文件时