【问题标题】:%2F instead of slash in url?%2F 而不是 url 中的斜线?
【发布时间】:2014-08-01 15:07:38
【问题描述】:

我在 url 链接中遇到 jquery 语法问题:

这是我得到的链接(英文):

...myaccount/?lang=en%2Fprint-order%2F2067%2F&print-order-type=receipt

这是德语链接:

...myaccount/print-order/2067/?print-order-type=receipt

现在的问题是,链接在我的浏览器中看起来没问题

myaccount/print-order/2067/?print-order-type=receipt

但实际上,当我复制链接时,链接内总是有一个“%2F”而不是“/”,这会导致获取 404 的问题。

当我手动替换“%2F”时,链接有效。

问题出在哪里?有什么想法可以解决这个问题吗?

以下代码来自woocommerce/templates/myaccount/my-orders.php

if ($actions) { foreach ( $actions as $key => $action ) { echo '<a
 href="' . esc_url( $action['url'] ) . '" class="button ' .
 sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) .
 '</a>'; }

它会在“我的订单”页面上生成“打印”按钮。我正在使用 mqtranslate 德语/英语。在德语版本中,一切正常——链接是正确的,只有当我切换语言时,才会出现“%2f”而不是“/”。但也只能在第一部分之后(直到 myaccount/)——因为一些“/”被正确编码。

在英文版中,它在“print-order-type=receipt”之前是一个“&”而不是一个“?”。

【问题讨论】:

  • 真的不知道 jquery 或 javascript 对您的 URL 问题有什么影响?
  • 显示你正在使用的 jQuery 代码。
  • 是的,对不起,也许这不是 jquery 的问题——我首先是这么想的。我从生成它的文件中添加了代码
  • 在第一个 url 中看起来你有 2 个查询字符串:myaccount/?lang=en%2Fprint-order%2F2067%2F?print-order-type=receipt。看起来好像第二个 url print-order/2067/?print-order-type=receipt 被附加到 myaccount/?lang=en
  • 嗨丹尼尔,是的,这是真的 - 我正在使用 mqtranslate 并用 jquery 删除了这段代码 - “href.replace” 这就是为什么我首先认为它与 jquery 有关。但事实并非如此。我认为是这个“esc_url” - 但我不知道在哪里改变它。两者都与此无关......

标签: javascript php woocommerce


【解决方案1】:

在复制的值上使用decodeURIComponent

decodeURIComponent('myaccount/?lang=en%2Fprint-order%2F2067%2F?print-order-type=receipt')

http://jsfiddle.net/7hySU/

【讨论】:

  • 嗨,Alex,感谢您的建议,但代码是动态的。所以每个项目的 url 都会改变。
  • @ad2003 您可以将动态值传递给该函数
  • 非常感谢!现在可以使用了!
【解决方案2】:

这样做:

echo '<a href="' . urldecode($action['url'] ) ....

更多信息: http://us1.php.net/manual/en/function.urldecode.php

urldecode() 正在做你正在寻找的事情。只需在你的 foreach 循环中应用它。

这会解决你的问题

干杯:)

你可以在http://3v4l.org/mhVuV 那种 phpfiddle 上试试 :)

把这个放进盒子里:

    echo urldecode("myaccount/?lang=en%2Fprint-order%2F2067%2F&print-order-type=receipt");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2010-12-29
    相关资源
    最近更新 更多