Javascript encodeURIComponent()添加的字符太多

Javascript encodeURIComponent()添加的字符太多,javascript,php,Javascript,Php,要么我的java脚本中的encodeURICOmponent()增加了许多字符,要么我不太明白它是如何工作的 我正在使用这行代码: var encoded = encodeURIComponent(searchTerm); 当我在传递Abt 12后查看chrome inspect元素时,它显示添加到URL的编码变量,如下所示: Abt%252012 我认为应该是这样的: Abt%12 因此,当我通过PHP进行搜索时,我会得到非常奇怪的结果 在注释中,看起来您是通过jQuery aj

要么我的java脚本中的encodeURICOmponent()增加了许多字符,要么我不太明白它是如何工作的

我正在使用这行代码:

    var encoded = encodeURIComponent(searchTerm);
当我在传递
Abt 12
后查看chrome inspect元素时,它显示添加到URL的编码变量,如下所示:

Abt%252012
我认为应该是这样的:

Abt%12

因此,当我通过PHP进行搜索时,我会得到非常奇怪的结果

在注释中,看起来您是通过jQuery ajax请求将值发送到服务器,然后它将负责参数编码,因此您无需再次编码

$.get("website.php", { p: searchTerm, }) 

很抱歉这不是编码的工作方式。。。每个要转义的字符都有一个转义序列。。。。你不能口述它,所以我需要用php解码它?而且
Abt 12
的编码值是
Abt%2012
不,它应该是
Abt%2012
。您将获得
Abt%252012
,因为您将字符串通过
encodeURIComponent()
两次。空格编码为
%20
,但是如果您通过
encode
方法再次传递编码值,则
%
将再次编码为
%25
,这就是您获得
%2520
的原因。。。因此,解决这个问题应该可以解决你的问题更多地查看讨论,这仍然不能解决问题。@Mike也许你解决了一个错误的问题?分享你的php相关代码,让我们看看你做错了什么,在php代码中你是对的。解析json时,出现此错误,无法读取未定义的属性“0”。如果else未定义,我如何让代码像else一样运行?对不起,错误是在PHP中还是在javascript中。。您还需要共享导致错误的代码