我正在使用 $_GET 方法将两个信息传递给一个 PHP 页面(team1,team2)。我想在一些 JavaScript 中将它们用作变量。我该如何做?
谢谢。
谢谢。
由于$_GET
只能访问查询字符串中的变量,如果您希望可以从JavaScript中执行相同操作:
<script>
var $_GET = populateGet();
function populateGet() {
var obj = {}, params = location.search.slice(1).split('&');
for(var i=0,len=params.length;i<len;i++) {
var keyVal = params[i].split('=');
obj[decodeURIComponent(keyVal[0])] = decodeURIComponent(keyVal[1]);
}
return obj;
}
</script>
原始回答:
在你的 .php 文件中。
<script type="text/javascript">
var team1, team2;
team1 = <?php echo $_GET['team1']; ?>;
team1 = <?php echo $_GET['team1']; ?>;
</script>
更安全的答案:
在发布这个答案时,我甚至没有考虑过 XSS。(看看评论!)来自 $_GET 数组的任何内容都应该被转义,否则用户几乎可以将任何 JS 插入到您的页面中。因此,请尝试使用以下代码:
<script type="text/javascript">
var team1, team2;
team1 = <?php echo htmlencode(json_encode($_GET['team1'])); ?>;
team1 = <?php echo htmlencode(json_encode($_GET['team1'])); ?>;
</script>
json_encode($_GET['team1'])
。当传递值到 JavaScript 文件时,始终使用 json_encode
以确保安全。 - Thai<script type="text/javascript">
var team1 = '<?php echo htmlentities($_GET['team1']); ?>';
var team2 = '<?php echo htmlentities($_GET['team2']); ?>';
</script>
json_encode()
代替htmlentities()
。 - Spudley<script type="text/javascript">
var team1 = <?php echo $_GET['team1'] ?>;
var team2 = <?php echo $_GET['team2'] ?>;
</script>
其他方法有点不太好,可能会出现一些问题。最好还是使用JavaScript:
<script>
function get_data(name){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);
if(results == null) return "";
else return results[1];
}
var var1 = get_data('var1');
var var2 = get_data('var2');
</script>
但这仍然不是非常安全的。
另一种方法是打印 $_GET 数组。我不知道这是否有效。无论如何,如果有效,那么它就在这里:
<script>
var _get = <?php print_r($_GET); ?>
var team1 = _get['team1'];
var team2 = _get['team2'];
</script>
你可能想要在一个函数上运行array_walk(或类似的东西),以清理每个字符串。
使用JavaScript实现的另一种方法:
var team1 = $_GET('team1');
function $_GET(q,s) {
s = s ? s : window.location.search;
var re = new RegExp('&'+q+'(?:=([^&]*))?(?=&|$)','i');
return (s=s.replace(/^?/,'&').match(re)) ? (typeof s[1] == 'undefined' ? '' : decodeURIComponent(s[1])) : undefined;
}
$_GET
变量可用且不为空,并使用以下内容:<script type="text/javascript">
var team1 = <?php echo $_GET['team1']; ?>;
var team2 = <?php echo $_GET['team2']; ?>;
</script>