当前位置: 首页 > 面试题库 >

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

百里秋月
2023-03-14
问题内容

我通过AJAX将表单字段的内容发布到PHP脚本,并使用JavaScript来发布escape(field_contents)。问题在于,任何加号都被删除并被空格代替。如何安全地“编码”加号,然后在PHP端适当地“解码”它?


问题答案:

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

注意:当您访问$_GET$_POST$_REQUEST在PHP中,要检索已经被解码值。

例:

在您的JS中:

// 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

在您的服务器上:

echo $_GET['string']; // "+"

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

对于GET请求,您可以从URI. $_SERVER['REQUEST_URI']或中检索该请求$_SERVER['QUERY_STRING']。对于邮递区号,file_get_contents('php://stdin')

注意:

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

例如:

text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100 
// correct
encodeURIComponent(text); // "%C4%80"

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

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



 类似资料:
  • 我使用预定义的电话格式来格式化一个国家的电话号码,但返回了国家的重要号码。 美国电话# IL(以色列)电话# 我不能使用其他方法,因为此方法(formatByPattern)接受预定义的PhoneFormats 来自javadoc:phonenumberrutil。formatByPattern 使用客户端定义的格式化规则以指定格式格式化电话号码。请注意,如果电话号码的国家/地区呼叫代码为零或其他

  • 表单上有一个TIdHTTP组件,我正在向基于云的服务器发送超文本传输协议POST请求。一切工作出色,除了1个字段:一个带加号的文本字符串,例如“你好世界狗”,被保存为“你好世界狗”。 在研究这个问题时,我意识到URL中的“”被视为一个空格,因此必须对其进行编码。这就是我被难倒的地方;POST请求的其余部分似乎由TIdHTTP组件编码,但“”除外。 通过Fiddler查看该请求,它将作为“hello

  • 问题内容: 我有一个简单的MySQL表,并且主索引(id)并未一一编号(1、31、35、100等)。我希望它们被编号为(1、2、3、4)。请告诉我该怎么做。我还要指出,我知道该操作可能造成的后果,但我只是想整理一下桌子。 问题答案: 我同意其他方法也可以,但是我只是给出了一个不同的想法。这将不需要任何临时表创建要求:

  • 我的xml 我的xls 在输出中,我得到4份,但我只想要一份。有什么问题吗? Lorem ipsum Dolor sat amet,consecetur adipith elit,se do eiusmod温度附带ut Workore et Dolore magna aliqua。 Ut enim ad minim veniam, quis nostr的练习ullamco的劳动是nisi ut a

  • 我有一个路径变量,在spring url中有方括号。但我也因为同样的原因而感到沮丧。我使用编码器组件在主干框架中对url进行编码。但即使url编码正确,我还是收到了错误的请求。

  • 问题内容: 是否可以使用反引号在Go中打印反引号: 问题答案: 原始字符串文字是反引号``之间的字符序列。在引号内,除反引号外,任何字符均合法。原始字符串文字的值是由引号之间未解释的字符组成的字符串。特别是,反斜杠没有特殊含义,字符串可以跨越多行。字符串文字