You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过链接向JavaScript传值时URL参数为undefined的问题

问题成因

跳转URL中orderNumber值为undefined是三处代码问题共同导致的:

  • 传参与接收不匹配:内联onclick事件中已经向myFunction2传入了订单ID参数,但函数定义时没有声明对应形参接收传入值,根本拿不到传入的订单号。
  • this指向逻辑错误:通过内联onclick属性直接调用普通函数时,函数内部的this默认指向全局window对象,而非触发点击的<a>标签;window对象本身没有id属性,读取this.id得到的结果自然是undefined。
  • 存在语法隐患:现有PHP拼接逻辑没有给传入的参数包裹字符串引号,如果订单号包含非数字字符(字母、特殊符号等),会直接触发JS语法错误,代码完全无法运行。
修复方法

按以下两步调整代码即可:

  1. 修改JavaScript函数,声明形参接收传入的订单ID,不再错误使用this取值:
<script>
// 增加orderId形参接收传入的订单号
function myFunction2(orderId) {
  var msg2 = encodeURIComponent(orderId);
  var myWindow = window.open("https://myurl.com/OaJER1?orderNumber="+ msg2 , "MsgWindow", "width=650,height=1000");
}
</script>
  1. 调整PHP的echo拼接逻辑,给传入的参数补充单引号包裹,保证最终渲染的HTML符合JS语法要求:
$order_id_inpro = "1234";
// 转义单引号,保证最终输出到页面的onclick属性值为 myFunction2('1234')
echo '<a class="dropdown-item" onclick="myFunction2(\''.$order_id_inpro.'\')">Upgrade Order</a>';

调整后最终渲染出的HTML代码为合法格式,点击链接时可以正确拿到订单号拼接到跳转URL中。

内容的提问来源于stack exchange,提问作者Matthew Payton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:33:25