首先,我不想要URL查询中的内容。我想要PHP在$_GET
数组中看到的内容。
这是因为如果使用mod_rewrite
制作漂亮的网址,则网址查询不会显示所有参数
那么有没有办法让查询字符串完全匹配php $_GET
数组中的内容?
-
我提出了一种使用PHP和JavaScript的方式:
function query_string()
{
<?php
function assoc_array_to_string ($arr)
{
$a = array();
foreach($arr as $key => $value)
{
$str = $key.'='.$value;
$a[] = $str;
}
return implode("&",$a);
}
?>
return '<?=urlencode(assoc_array_to_string($_GET))?>';
}
...但是如果可能的话我只需要使用javascript就可以了,因为我无法将PHP代码放在.js
文件中。
答案 0 :(得分:3)
JavaScript不会“只看到”查询字符串吗?客户端脚本如何知道任何重写规则?
我能想到的唯一方法是使用PHP - 将它回显到主页面内联脚本中的变量而不是JS文件。
答案 1 :(得分:3)
在您的网页&lt; head&gt;:
中<script type="text/javascript">
var phpQueryParams = <?php print json_encode($_GET); ?>
</script>
假设至少有PHP 5.2,否则使用external package
答案 2 :(得分:1)
查询字符串位于window.location.search
,但这是原始查询字符串。所以如果你运行这样的东西:
(function () {
QueryStr = {}
QueryStr.raw = window.location.search.substr(1);
var pairStrs = QueryStr.raw.split('&');
QueryStr.val = {}
for(var i=0,z=pairStrs.length; i < z; i++) {
var pair = pairStrs[i].split('=');
QueryStr.val[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
}
})();
你在$_GET
中有一些非常类似于QueryStr.val
的内容。
当然,你提到你使用mod_rewrite混合了一些东西,这很酷,但由于我们不知道你的重写方案,我们无法帮助具体 。
然而...... 你知道你的重写方案,你可能修改我上面给出的代码来操作window.location
的其他部分。我敢打赌,您希望将window.location.pathname
分为/
字符,而不是&
。