欢迎,
我正在使用jquery通过POST发送表单。
这就是我如何获得价值。
var mytext = $("#textareaid").val();
var dataString = 'text='+ mytext;
问题是,我失去了某个地方'+'的标志...... PHP没有得到它。 但是当我打印我的文字时,我可以看到+符号。
我认为它是特殊的字符,它被jquery删除了。
有没有人有更好的想法呢,用“hereshouldbepositivesign”在javascript“+”中补充,并在php repleace“hereshouldbepositivesign”到“+”? 此致
答案 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已经单独完成了。
不可:强> 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