【问题标题】:How to send URL (with vars in it) as a single var?如何将 URL(其中包含 vars)作为单个 var 发送?
【发布时间】:2009-05-22 14:06:17
【问题描述】:

我有一个这样的 url 字符串:

http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g

我需要将此 url 作为单个字符串变量从 ajax 发送到 php 脚本。

我遇到了麻烦,因为由于 url 字符串本身的变量,它不断被分成几个变量。说得通?如何将其作为单个字符串发送??

谢谢!!!

【问题讨论】:

    标签: php ajax urlvariables


    【解决方案1】:

    您需要对其进行编码。

    在 PHP 中:urlencode()

    $str = urlencode('http://....');
    

    在 Javascript 中:encodeURIComponent

    str = encodeURIComponent('http://...');
    

    【讨论】:

    • 嗯...如果你在 GET 或 POST 中传递它,那么 PHP 应该为你解码它。
    【解决方案2】:

    您需要urlencode 网址。然后,您将在收到它的页面上urldecode

    所以网址会变成

    http%3A%2F%2Fwww.google.com%2Fcse%3Fcx%3D017840637368510444960%3Any1lmky7r-0%26client%3Dgoogle-csbe%26output%3Dxml_no_dtd%26q%3Dsimon%2Bg%0D%0A
    

    【讨论】:

      【解决方案3】:

      escape()encodeURIComponent()

      【讨论】:

        【解决方案4】:
        <?php 
        // In your URL-emitter page
        $decoded_url = "http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g";
        $link_addr = "/index.php?encodedurl=".urlencode($decoded_url);
        
        echo '<a href="'.$link_addr.'">Click me</a>';
        
        
        // in your URL-reciever page (here the same page)
        if(array_key_exists("encodedurl",$_GET)) {
            echo 'decoded url='.urldecode($_GET["encodedurl"]);
        }
        

        【讨论】:

          【解决方案5】:

          我猜你需要像这样在 javascript 中进行 escape()

          escape("cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g" )

          编辑: 我刚刚搜索了一下,发现 encodeURIComponent() 是最好的解决方案。

          请参阅http://xkr.us/articles/javascript/encode-compare/ 以获得对 escape()、encodeURI() 和 encodeURIComponent() 的一个很好的比较

          【讨论】:

            【解决方案6】:

            另外,您可以尝试加密(如 base64)

            【讨论】:

            • 对,不是加密。还有...呵呵.. JS 上的第三方 base64 对 URL 进行编码...为什么?
            • @Tahir Akthar;你是对的,我的错!我读错了帖子,并添加了一个愚蠢的答案:)
            猜你喜欢
            • 1970-01-01
            • 2012-09-13
            • 2013-10-31
            • 2014-07-03
            • 2016-08-05
            • 1970-01-01
            • 2012-04-11
            • 1970-01-01
            • 2021-04-28
            相关资源
            最近更新 更多