【问题标题】:Encode url by Javascript通过 Javascript 对 url 进行编码
【发布时间】:2012-11-25 13:49:11
【问题描述】:

朋友们,我目前正在使用下面的functionencode 我的数据并通过GET 方法发送它们...我正在使用ajax 发送和php 接收它们...

function urlencode(a){
     a=encodeURIComponent(a);
     a=a.replace(/\\/g,'%5C');
     a=a.replace(/!/g,'%21');
     a=a.replace(/'/g,'%27');
     a=a.replace(/\(/g,'%28');
     a=a.replace(/\)/g,'%29');
     a=a.replace(/\*/g,'%2A');
     a=a.replace(/~/g,'%7E');
     a=a.replace(/%20/g,'+');
     a=a.replace(/%26amp%3B/gi,'%26');
     a=a.replace(/%26lt%3B/gi,'%3C');
     a=a.replace(/%26gt%3B/gi,'%3E');
     a=a.replace(/%26nbsp%3B/gi,'%C2%A0');
     return a;
}

在通过encodeURIComponent() 传递字符串后,我使用了额外的replace() 方法,以便该函数将我的链接的字符串编码为类似php。 ..

现在我的问题是,有没有人知道任何更短或更简单的替代方法来做同样的事情......

我提出这个问题只是为了学习目的...请不要使用 jQuery...

【问题讨论】:

  • 我不明白为什么对这个问题投反对票...??
  • 我没有否决它,但你所做的事情似乎真的值得怀疑。 (编辑:啊,我现在明白了)
  • @Pekka 我没有指着你……指着他这样做……在我的问题中他的第一次免费投反对票……
  • 总是,总是使用内置方法来逃避事情。永远不要自己动手。

标签: php javascript url encode encodeuricomponent


【解决方案1】:

使用escape() instead of encodeURIComponent 将至少消除您正在使用的一些replace()。例如:

function urlencode(a){
 return escape(a);
   .replace(/\*/g,'%2A');
   .replace(/%20/g,'+');
   .replace(/%26amp%3B/gi,'%26');
   .replace(/%26lt%3B/gi,'%3C');
   .replace(/%26gt%3B/gi,'%3E');
   .replace(/%26nbsp%3B/gi,'%C2%A0');
}

【讨论】:

    【解决方案2】:

    如果你从 JS 向 PHP 发送 GET 请求,你应该使用

    • encodeURIComponent(),对于每个参数,在 javascript 端
    • nothing 在 PHP 方面(因为 $_GET 已经是 urldecode()d;请阅读其链接文档中的注释部分)

    如果你必须在PHP中对东西进行url编码,请使用urlencode(),它保证与对应的urldecode()兼容。

    如果您想“自己”学习如何做,请阅读相应库中的源代码,以确保您不会错过任何场景……重新实现库函数通常是个坏主意.

    【讨论】:

    • 在回答之前仔细阅读问题...您根本不理解我的问题...其次我发布了javascript代码而不是php...
    • 提问前把问题写好,仔细阅读我的回答。如果您的目的是发送 GET 请求,则无需执行您在问题中所做的事情。调用encodeURIComponent()(它是标准的 JS,而不是 PHP)就足以对每个组件进行编码。在服务器端,您根本不需要任何 PHP 来对其进行解码(您为我的链接编写 /encode 字符串,类似于您的问题中的 PHP/)。
    猜你喜欢
    • 2017-03-24
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2013-03-04
    • 1970-01-01
    • 2017-07-08
    • 2012-01-27
    相关资源
    最近更新 更多