2017-03-02 74 views
-1

我有一個奇怪的情況,我想動態地在使用JavaScript的XML文檔中構建一個URL字符串。我已經想出瞭如何使用encodeURIComponent在字符串中使用&符號來組裝我的URL參數,並構建到我需要的URL。但是,我需要將URL作爲解碼字符串寫入頁面,否則訪問該URL不會執行我需要的操作。整個文檔使用JavaScript構建,因此它必須位於JavaScript環境中。在JavaScript中使用encodeURIComponent來編碼URL變量,但然後解碼寫入?

舉例來說,我有以下URL我能夠以組裝爲XML正確呈現:

http://www.myurl.com/product-name?itemcolor=2%26size=7

不過,我需要把它放回這是一個鏈接在XML文檔:

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環境。

提供的任何幫助將非常感激。

+0

通常情況下,你會經過編碼的一切,然後你 '?'可以使用decodeURIComponent()在'?'之後解碼字符串的部分。另一方面。 – rasmeister

+1

「*爲了使XML正確呈現*」是什麼意思? – Bergi

+1

看起來您已經將百分比編碼與XML編碼混淆了。當有許多測試庫可用時,請不要編寫自己的編碼函數,這些函數庫可以正確執行後續操作。 – zzzzBov

回答

0

其實你想要做的是正確構建你的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'); 
+0

聖潔的廢話。有NetSuite經驗的人?我覺得我剛剛找到一隻獨角獸。這完全是訣竅。我甚至不需要第一個encodeURIComponent()。把它留給NetSuite ... – B1gJ4k3

+0

我認爲我們其中有一些人在這裏有一定的NetSuite經驗。如果這對你有用,將其標記爲可接受的答案將是非常好的 – bknights

相關問題