首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AJAX POST和加号(+) --如何编码?

AJAX POST和加号(+) --如何编码?
EN

Stack Overflow用户
提问于 2009-09-03 13:26:54
回答 5查看 136.7K关注 0票数 110

我通过AJAX将表单域的内容POSTing到PHP脚本,然后使用JavaScript到escape(field_contents)。问题是所有的加号都被去掉了,取而代之的是空格。如何安全地“编码”加号,然后在PHP端适当地“解码”它?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-03 16:20:25

在JS中使用encodeURIComponent(),在PHP中应该收到正确的值。

注意:当你在PHP中访问$_GET$_POST$_REQUEST时,你检索的是已经被解码的值。

示例:

在你的JS中:

代码语言:javascript
复制
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B

在您的服务器上:

代码语言:javascript
复制
echo $_GET['string']; // "+"

只有原始HTTP请求包含url编码的数据。

对于GET请求,您可以从URI. $_SERVER['REQUEST_URI']$_SERVER['QUERY_STRING']检索它。对于For编码的POST,file_get_contents('php://stdin')

注意:

decode()仅适用于单字节编码的字符。它不适用于整个UTF-8范围。

例如:

代码语言:javascript
复制
text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100 
// correct
encodeURIComponent(text); // "%C4%80"

注:"%C4%80"等同于:escape('\xc4\x80')

它是表示UTF8中的Ā的字节序列(\xc4\x80)。因此,如果您使用encodeURIComponent(),您的服务器端必须知道它正在接收UTF8。否则PHP会破坏编码。

票数 171
EN

Stack Overflow用户

发布于 2009-09-03 13:30:12

在JavaScript try中:

代码语言:javascript
复制
encodeURIComponent() 

在PHP中:

代码语言:javascript
复制
urldecode($_POST['field']);
票数 22
EN

Stack Overflow用户

发布于 2015-03-07 06:18:05

让它变得更有趣,希望能让别人更少拉扯头发。使用python,为我们可以使用curl进行配置的设备构建了字典。

问题:{"timezone":"+5"} //throws an error " 5"

解决方案:{"timezone":"%2B"+"5"} //Works

所以,简而言之:

代码语言:javascript
复制
var = {"timezone":"%2B"+"5"}
json = JSONEncoder().encode(var)
subprocess.call(["curl",ipaddress,"-XPUT","-d","data="+json])

感谢这篇文章!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1373414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档