【问题标题】:Pass url with character %20 as ajax variable将带有字符 %20 的 url 作为 ajax 变量传递
【发布时间】:2012-11-24 04:52:06
【问题描述】:

我需要将 url 传递给 php 页面。 url 可能包含也可能不包含特殊字符和编码变量。 例如考虑 ajax 请求。

var url = 'http://siteaddr.com/abc%20cdf%202012%20movies%20software/';
$.get('check_link.php',{url:url},function(){
    //some function
});

php页面中变量$_GET['url']的回显结果为http://siteaddr.com/abc cdf 2012 movies software/ %20 被转换为空格。我需要按原样接收网址。 尝试对网址进行编码和解码。但我没有得到我需要的结果。

【问题讨论】:

  • URL encode它!还是你已经做了?
  • 通过编码,我将收到正确编码的整个 url。所以我必须在 php 页面上对其进行解码。通过解码,它也解码了 url 中的 %20 ......那就是我需要一些替代方案......
  • 这是http://siteaddr.com/abc%20cdf%202012%20movies%20software/ 的url 编码结果http%3A%2F%2Fsiteaddr.com%2Fabc%20cdf%202012%20movies%20software%2F,而解码它的结果http://siteaddr.com/abc cdf 2012 movies software/ 丢失了%20。
  • 如果您使用$url = urlencode($_GET['url']); 会怎样?或者,您可以使用preg_replace()

标签: php jquery ajax url


【解决方案1】:
  1. 您不应该使用将用作键的名称来定义变量。
  2. 再次对 URL 进行编码,在发送之前会让 PHP 对双重编码的 URL 进行解码。

    var link = 'http://siteaddr.com/abc%20cdf%202012%20movies%20software/';
    $.get('check_link.php',{url: encodeURIComponent(link)}, function(){
        //some function
    });
    // Double encoded URL: Note that % has become %25
    // http%3A%2F%2Fsiteaddr.com%2Fabc%2520cdf%25202012%2520movies%2520software%2F
    

http://jsfiddle.net/zNqac/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2012-01-25
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多