使用 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&amp;size=7

任何自由文本都应 运行 通过 nlapEscapeXML

nlapiEscapeXML('http://www.myurl.com/product-name?itemcolor=2&size=7');