如何发送“+”符号(添加,正面)

时间:2010-08-12 13:32:03

标签: jquery

欢迎,

我正在使用jquery通过POST发送表单。

这就是我如何获得价值。

var mytext = $("#textareaid").val();
var dataString = 'text='+ mytext;

问题是,我失去了某个地方'+'的标志...... PHP没有得到它。 但是当我打印我的文字时,我可以看到+符号。

我认为它是特殊的字符,它被jquery删除了。

有没有人有更好的想法呢,用“hereshouldbepositivesign”在javascript“+”中补充,并在php repleace“hereshouldbepositivesign”到“+”? 此致

3 个答案:

答案 0 :(得分:6)

您必须正确编码参数名称和值:

var dataString = 'text=' + encodeURIComponent(mytext);

我没有费心对“文本”进行编码,因为它显然是安全的。

如果您的值在表单中,您可以让jQuery为您执行此操作。你没有发布你如何进行POST,但是如果它是使用jQuery ajax API你可以将“数据”设置为普通对象:

{ text: mytext }

它会知道为你编码。

答案 1 :(得分:0)

至少在IN GET请求中,空格被转换为加号(因为URL不能有空格),并且框架通常会在将数据提供给您进行处理之前将它们翻译回来。

这意味着您必须使用加号执行其他操作才能获得加号。普通的URL编码会使它们成为%2B

答案 2 :(得分:0)

我遇到了同样的问题,我发现我在PHP中的数据上又做了一次urlDecode,尽管PHP已经单独完成了。

  • 如果你给它,jQuery可能会自动为你编码URIComponent数据 data:{}作为对象。
  • PHP会自动urldecode所有$ _POST $ _GET 内容。

不可: 1 + 1 => js encodeURIComponent(“1 + 1”)=> 1%2B1 => php auto urldecode => 1 + 1

如果你再做一个urldecode,它会把+变成空格,你不想要。

<强> BAD: 1 + 1 =&gt; js encodeURIComponent(“1 + 1”)=&gt; 1%2B1 =&gt; php auto urldecode =&gt; 1 + 1 =&gt; php urldecode(“1 + 1”)=&gt; 1 1