想象一下,我有一个脚本abc.js
,它有一个全局变量userid
。加载后会立即发出几个AJAX请求(在浏览器解析 DOM 之后 我需要脚本为不同的用户提供不同的变量值。在JS可用后,必须立即提出请求。这就是我要找的东西:
/js/abc.js?userid=12345
userid
设置为12345,然后一切都正常处理。有没有办法用一些Apache / Lighttpd扩展来做到这一点?由于我不能在文档的开头依赖<script>userid=12345</script>
,因为abc.js
很可能会在评估userid=12345
之前执行。
答案 0 :(得分:1)
在调用abc.js
脚本之前,您可以简单地使用PHP输出javascript变量。在这种情况下,参数将传递给主PHP脚本(即页面)。像这样:
<script type="text/javascript">
var userid = <?php echo $_GET['userid']; ?>;
</script>
<script type="text/javascript" src="/js/abc.js">
当然,您可能希望在使用它之前清理PHP中的参数值。
在这里,abc.js
只能在全局范围内引用userid
的值。不需要将userid传递给URL中的脚本,并且Apache使用PHP来动态生成js文件。实际上,您可能不希望使用该方法,因为它会阻止脚本的最佳浏览器缓存。
如果您不想要涉及PHP,您可以使用其他选项来传递此数据,例如@yent,HTML5 localStorage,cookies等提供的URI解析选项。
答案 1 :(得分:0)
您可以解析window.location.search
并设置window
属性:
var p = window.location.search.substr(1).split(/&/);
if(p.length && p[0]) for(var i=0; i<p.length; i++) {
var a = p[i].split(/=/);
window[a[0]] = a[1];
}