我使用$ _GET方法(team1,team2)将两条信息传递到php页面。 我想在一些javascript中将它们用作变量。我怎么能这样做?
谢谢
答案 0 :(得分:8)
由于$_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>
答案 1 :(得分:1)
原始回答:
在.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>
有关来自Google http://code.google.com/p/doctype/wiki/ArticleXSSInJavaScript的XSS的更多信息。
为评论者欢呼。
答案 2 :(得分:1)
确保使用htmlentities之类的内容来转义值,以便您的应用程序不会受到跨站点脚本攻击的影响。理想情况下,您需要验证变量,以确保它们在输出到页面之前是预期值。
<script type="text/javascript">
var team1 = '<?php echo htmlentities($_GET['team1']); ?>';
var team2 = '<?php echo htmlentities($_GET['team2']); ?>';
</script>
答案 3 :(得分:0)
<script type="text/javascript">
var team1 = <?php echo $_GET['team1'] ?>;
var team2 = <?php echo $_GET['team2'] ?>;
</script>
答案 4 :(得分:0)
其他方法有点脏,可能会有一些问题。你最好只使用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(或类似的东西)来清理每个字符串。
答案 5 :(得分:0)
使用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;
}
答案 6 :(得分:-1)
确保您的$_GET
vars可用而非空,并使用以下内容:
<script type="text/javascript">
var team1 = <?php echo $_GET['team1']; ?>;
var team2 = <?php echo $_GET['team2']; ?>;
</script>