使用 JavaScript 中的 encodeURIComponent 编码 URL 变量,然后解码写入?
Using encodeURIComponent in JavaScript to encode URL variable, but then decode to write?
我遇到了一个奇怪的情况,我试图使用 JavaScript 在 XML 文档中动态构建 URL 字符串。我已经弄清楚如何使用字符串中的符号将 encodeURIComponent 用于 assemble 我的 URL 参数,并构建我需要的 URL 。但是,我需要将 URL 作为解码字符串写入页面,否则,访问 URL 不会正确执行我需要的操作。整个文档是在 JavaScript 中构建的,因此它必须在 JavaScript 环境中。
例如,我有以下 URL 我能够 assemble 以便 XML 正确呈现:
http://www.myurl.com/product-name?itemcolor=2%26size=7
但是,我需要在 XML 文档中将其作为 link 转回:
http://www.myurl.com/product-name?itemcolor=2&size=7
这可能吗?这有意义吗?
到目前为止,这是我的代码片段:
var baseURL = 'http://myurl.com', urlappend = '', colorid, sizeid;
function getVariants(item) {
variants = '<variant>';
if ("custitem109" in item['columns']){
colorid = item['columns']['custitem109']['internalid'];
urlappend += '?itemcolor=' + colorid;
}
if ("custitem110" in item['columns']){
sizeid = item['columns']['custitem110']['internalid'];
urlappend += colorid ? encodeURIComponent('&') + 'size=' + sizeid : '?size=' + sizeid;
}
if (typeof item['columns']['urlcomponent'] !== 'undefined' && urlappend !== '') {
variants += '<action_url>' + baseURL + '/' + item['columns']['urlcomponent'] + urlappend + '></action_url>';
}
variants += '</variant>';
return variants;
}
(此函数循环多次以构建 XML 提要的一部分)
这是一个 NetSuite suitelet,如果它有任何不同,或者如果有人对为什么这一切都必须在 JS 环境中有任何疑问。
非常感谢提供的任何帮助。
实际上您要做的是正确构建您的 URL,然后 xml 转义它们。
例如:
http://www.myurl.com/product-name?itemcolor=2&size=7
变成
http://www.myurl.com/product-name?itemcolor=2&size=7
任何自由文本都应 运行 通过 nlapEscapeXML
nlapiEscapeXML('http://www.myurl.com/product-name?itemcolor=2&size=7');
我遇到了一个奇怪的情况,我试图使用 JavaScript 在 XML 文档中动态构建 URL 字符串。我已经弄清楚如何使用字符串中的符号将 encodeURIComponent 用于 assemble 我的 URL 参数,并构建我需要的 URL 。但是,我需要将 URL 作为解码字符串写入页面,否则,访问 URL 不会正确执行我需要的操作。整个文档是在 JavaScript 中构建的,因此它必须在 JavaScript 环境中。
例如,我有以下 URL 我能够 assemble 以便 XML 正确呈现:
http://www.myurl.com/product-name?itemcolor=2%26size=7
但是,我需要在 XML 文档中将其作为 link 转回:
http://www.myurl.com/product-name?itemcolor=2&size=7
这可能吗?这有意义吗?
到目前为止,这是我的代码片段:
var baseURL = 'http://myurl.com', urlappend = '', colorid, sizeid;
function getVariants(item) {
variants = '<variant>';
if ("custitem109" in item['columns']){
colorid = item['columns']['custitem109']['internalid'];
urlappend += '?itemcolor=' + colorid;
}
if ("custitem110" in item['columns']){
sizeid = item['columns']['custitem110']['internalid'];
urlappend += colorid ? encodeURIComponent('&') + 'size=' + sizeid : '?size=' + sizeid;
}
if (typeof item['columns']['urlcomponent'] !== 'undefined' && urlappend !== '') {
variants += '<action_url>' + baseURL + '/' + item['columns']['urlcomponent'] + urlappend + '></action_url>';
}
variants += '</variant>';
return variants;
}
(此函数循环多次以构建 XML 提要的一部分)
这是一个 NetSuite suitelet,如果它有任何不同,或者如果有人对为什么这一切都必须在 JS 环境中有任何疑问。
非常感谢提供的任何帮助。
实际上您要做的是正确构建您的 URL,然后 xml 转义它们。
例如:
http://www.myurl.com/product-name?itemcolor=2&size=7
变成
http://www.myurl.com/product-name?itemcolor=2&size=7
任何自由文本都应 运行 通过 nlapEscapeXML
nlapiEscapeXML('http://www.myurl.com/product-name?itemcolor=2&size=7');