0

我不太确定如何问这个问题,对不起..但基本上就是这个..

我刚开始使用 Ajax .. 并在后台发送 XMLhttpRequest,我在表单数据中遇到了一些 html 特殊字符的问题,特别是 & 符号过早地终止了变量

例如。将“你和我”的结果评价为“你”

现在从我的角度解释这个问题..这很简单..如果我使用GET方法提交我的常规表单,同样的事情会发生..因为变量是URL编码的..但是如果我将表单设置为POST方法然后一切都在我需要的时候被保留了..

现在我相信它与这个(?)

hr.open("POST", link, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

特别是在 form-urlencoded 部分..有替代方案吗?

我不想必须对我通过 Ajax 传递的每个变量运行清理例程:(

4

1 回答 1

1

&过早终止变量的符号

&应该终止 x-www-form-urlencoded 数据中的值。构建 URL 时需要对数据进行编码。

如果我使用 GET 方法提交我的常规表单,也会发生同样的事情......因为变量是 URL 编码的

不。如果您使用 GET 提交常规表单,则输入的数据将是 URL 编码的,并且作为数据出现的 & 字符将由原始字符%26而不是原始&字符表示,因此不会发生同样的事情。

是否有替代方案[应用程序/x-www-form-urlencoded]?

您可以使用任何您喜欢的数据格式。有些比其他更容易生成(JSON 特别容易从浏览器生成)。然后,您将面临在服务器上解码它们的挑战(表单处理库不倾向于使用 JSON,因此您必须获取原始 POST 数据并自己解码)。

由于您的实际问题是通过对数据进行编码来解决的,因此这是不必要的。

于 2013-01-12T08:46:01.917 回答