【问题标题】:What is the best practice to grab any url params from the URL? [closed]从 URL 中获取任何 url 参数的最佳做法是什么? [关闭]
【发布时间】:2015-07-20 17:10:58
【问题描述】:

我很好奇,从 URL 中获取任何 url 参数的最佳做法是什么?


示例

http://localhost:8080/BIM/teacher/reports/chapter-quiz/assignment?assessmentId=206a9246&classroomId=722bfadb

目标是抢到:

  • 评估 ID
  • classroomId

1。制作一个 parseUrl 函数

function parseUrl(url) {
    var urlParamSplit = url.split("?");

    if (urlParamSplit.length !== 2) {
        return "InvalidUrlNoParamsSet";
    }

    var paramsList = urlParamSplit[1].split("&");
    if (paramsList.length < 1) {
        return "InvalidUrlNoParamsFound";
    }

    var paramsObj = {};
    paramsList.forEach(function(item) {
        var keyValueArray = item.split("=");
        paramsObj[keyValueArray[0]] = keyValueArray[1];
    });

    return paramsObj;
}

var params = parseUrl(href);



console.log(params.assessmentId) // 206a9246
console.log(params.classroomId) // 722bfadb

2。从隐藏的输入中抓取它

在 HTML 页面中抛出这个

<input id="assessmentId" type="hidden" value="<c:out escapeXml="true" value="${param.assessmentId}" />" />
<input id="classroomId" type="hidden" value="<c:out escapeXml="true" value="${param.classroomId}" />" />




console.log($("#assessmentId").val()) // 206a9246
console.log($("#classroomId").val())  // 722bfadb

到目前为止,我尝试了两种方法,它们都给了我想要的数据,但我不确定应该使用哪一种。

如果我应该考虑其他方法,请提出建议。

【问题讨论】:

  • 第二种方法不是使用第一种方法的功能吗?
  • @Waflix:不,他们不是。它只是一个 jQuery 选择器。
  • 我建议使用 URL 解析器,例如 URI.js
  • 第一种方法肯定更好if done correctly。第二个确实需要一些服务器端处理,您向我们展示的是不是 HTML 页面

标签: javascript jquery url


【解决方案1】:

我认为第一种方法更强大,如果您有几个参数可以从 url 中获取,或者如果您有一些动态生成的参数而不是在这种情况下的第二种方法(动态参数),您必须循环并创建输入也是动态的。

短:如果您有多个参数要抓取或动态生成的参数,请使用第一种方法,如果您的参数较少(静态和可控参数),请使用第二种方法。

如需更多解决方案/想法this link & this one 可能会对您有所帮助。

【讨论】:

    【解决方案2】:

    如果 http 请求要在服务器中更改/添加某些内容,您应该使用 POST 请求(不是您的情况)

    如果 http 请求要使用客户端提供的某些数据获取某些内容,则应使用 GET 查询参数将数据传递给服务器

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 2022-01-04
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多