javascript - 在 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 相同的代码时,一切正常。
解决方案
我猜既然调用了这个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 中使用的数据。
推荐阅读
- nginx - 在伞形应用初始化 Elixir/Phoenix 后编写文件,用于 Heroku 中的 Nginx 初始化
- sorting - 在不使用排序语句的情况下在 itab 中找到最大值?
- java - @DataJpaTest:如何停止加载不需要的 @ConfigurationProperties
- javascript - 我想在反应中过滤 html 表格数据。但我无法过滤 React.js(或仅 js)中的所有数据
- mysql - 如何使用正则表达式匹配 select 语句中的特定字符串和周围的单词?
- django - 使用单选框更新模型中的多个字段
- hibernate - 使用spring boot 2 hibernate 5通过示例结果缓存查询
- tensorflow - 逐步训练 Keras LSTM(有状态)
- python-3.x - 将特定记录更改为 Pnadas 中的列
- android - 如何防止 Line Reader 跳过第一行?