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

如何用JS获取友好URL中的参数?调用getUrlParameter报错如何解决

问题排查与修复方案

1. 前端JS报错根因修复

你遇到的val_usu未定义问题分为两种场景:

  • 场景1:你没有自行实现getUrlParameter方法,原生JS不存在这个内置API,调用不存在的函数会抛出引用错误,导致变量赋值失败。
  • 场景2:你实现了该方法,但方法只支持获取?后面的查询参数,而你当前的URL是路径式参数,id_u的值27是路径段,不存在于查询参数中,方法返回undefined导致变量值异常。

修复代码:

新增路径参数获取方法,同时修正原有JS的逻辑问题:

// 新增:从当前URL路径中获取id_u参数
function getUserIdFromPath() {
  const pathSegments = window.location.pathname.split('/')
  // 路径结构为 /admonCapacitacion/cursos/cursosUsuario/27,取最后一段即为id_u
  return pathSegments[pathSegments.length - 1]
}

function recorrerListaInsertCursos(){
  var listaChecksAddCursos = '';
  $("input[name=checkbox2]").each(function (index) {  
     if($(this).is(':checked')){
        listaChecksAddCursos += $(this).val() + ',';
     }
  });
  // 去掉末尾多余的逗号
  listaChecksAddCursos = listaChecksAddCursos.slice(0, -1);
  const val_usu = getUserIdFromPath();
  console.log(val_usu);
  location.href = "../insertCoursesUser/" + listaChecksAddCursos + "&" + val_usu;
  // 修正返回值,原变量listaChecks未定义
  return listaChecksAddCursos;
}

2. .htaccess规则修复

你的重写规则顺序错误,通用后缀添加规则优先级高于业务规则,导致业务路径映射完全不生效,同时规则匹配规则写错,无法匹配无后缀的路径。

修复后的配置:

Options -Indexes

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /admonCapacitacion/
RewriteCond %{REQUEST_URI} !^admonCapacitacion/c/css.*$
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RedirectMatch ^/(.*?)/$ /$1

# 业务规则放在前面,加[L]标记匹配后停止后续匹配
RewriteRule ^cursos/cursosUsuario/(.+)$ cursos/cursosUsuario.php?id_u=$1 [L]
RewriteRule ^cursos/insertCoursesUser/(.+),&(.+) cursos/insertCoursesUser.php?idsAddCourse=$1&id_u=$2 [L]

# 通用加.php后缀规则放在最后
RewriteRule ^(.*)$ $1.php [L]
</IfModule>

内容的提问来源于stack exchange,提问作者Luis Alberto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:04