【发布时间】: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