首页 > 解决方案 > 在 URL 中传递 Javascript 变量

问题描述

我正在尝试通过 URL 将 javascript 变量传递给 php 页面。下面的代码触发了 php 页面,但它没有获取变量。我已经使用 window.location.href 编写了代码并且工作正常,问题在于它加载 tracker.php 页面的方式。

下面是我的代码。

<script type="text/javascript">
var siteId = "VT0013";
</script>
<script type="text/javascript" src="http://www.domainame.com/tracker.php?siteId="+ siteId ;> 
</script>

PHP 页面

$siteId = $_GET["siteId"];

一旦我得到siteId,我将结果作为测试通过电子邮件发送,这工作正常,除了我没有得到siteId的值。当使用与 window.location.href 相同的代码时,一切正常。

标签: javascriptphp

解决方案


我猜既然调用了这个tracker.php,你实际上只需要点击这个 URL 吗?如果是这种情况,请考虑使用Beacon API

navigator.sendBeacon('https://example.com/tracker.php' {
  siteId: 'VT0013'
});

这会产生一个 HTTP POST 请求,但无论如何这通常会更好。您不必担心缓存。此外,即使请求尚未完成并且页面正在卸载,Beacon API 仍然可以工作。

如果您确实想要动态加载 JavaScript,当前的方法是使用import().

const siteId = 'VT0013';
await import (`https://example.com/tracker.php?siteId${encodeURIComponent(siteId)}`);

最后,如果您需要动态加载此 JavaScript并且该脚本需要在页面其余部分(即,不是模块)的上下文中运行,那么最好的办法是注入一个新的脚本标签: https://stackoverflow .com/a/8578840/362536

无论您做什么,请确保您正在转义 URL 和 HTML 中使用的数据。


推荐阅读