&符号不通过url传入字符串变量

时间:2012-09-28 09:42:36

标签: php javascript url

我正在尝试将一个大的URL作为字符串传递给另一个php页面并通过$_REQUEST[]获取它 但它不起作用。 这是第一页的代码(JavaScript):

var url="index.php?module=Contacts&return_module=Campaigns&action=UD_DetailView&popuptype=detailview&select=enable&form=EditView&form_submit=false";
var intermediate_url="choose_template.php?variable_url="+url;

window.location=intermediate_url;

其他页面上的代码是:

<?php echo "url = ".$_REQUEST['variable_url']; ?>

我在页面上看到的echo_template.php是:

url = index.php?module=Contacts

我不明白。为什么它会在第一次&出现时破裂? 我该怎么做才能绕过它?

4 个答案:

答案 0 :(得分:6)

尝试在js中使用:

url = encodeURIComponent(url);

比在php:

echo "url = ". urldecode($_REQUEST['variable_url']);

答案 1 :(得分:2)

操作url时,应使用urlencode和urldecode函数

http://php.net/manual/en/function.urlencode.php
http://php.net/manual/en/function.urldecode.php

在javascript中:

url = encodeURIComponent(url)

答案 2 :(得分:1)

尝试使用urlencode():

var url="<?php echo urlencode('index.php?module=Contacts&return_module=Campaigns&action=UD_DetailView&popuptype=detailview&select=enable&form=EditView&form_submit=false')?>";

var intermediate_url="choose_template.php??variable_url="+url;

window.location=intermediate_url;

答案 3 :(得分:0)

如果我理解正确的话你会回应当前页面的全名:用它来获取它:

function curpage() {
    $pu = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pu .= "s";}
    $pu .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
    $pu .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {$pu .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];}
    return $pu;
}

<?php echo "url = ".curpage(); ?>

这一切都会正常工作!