可以用AJAX XMLHttpRequest做一个真正的POST(?不是var = val url type post)吗?

时间:2013-01-12 08:36:31

标签: javascript ajax post

我不太确定怎么问这个问题,抱歉..但基本上就是这个......

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

例如。值“你和我”结果为“你”

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

现在我相信它有什么可做的(?)

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

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

我不想在我通过Ajax传递的每个变量上运行一个清理例程:(

1 个答案:

答案 0 :(得分:1)

  

&符号过早终止变量

&应该终止x-www-form-urlencoded数据中的值。在构建网址时,您需要encode数据。

  

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

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

  

是否有[application / x-www-form-urlencoded]的替代方案?

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

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