javascript
  • url
  • encode
  • 2016-07-07 87 views -1 likes 
    -1

    我讀了這一點,更多的文章:固體的JavaScript編碼URI

    When are you supposed to use escape instead of encodeURI/encodeURIComponent?

    不過我還沒有找到一個堅實的編碼/解碼的URI方案。

    比方說,我有這些變量

    var first = 'Hello&and'; 
    var second = "Let's have cite"; 
    var third = 'And "hash,.#$'; 
    var fourth = 'åäö other strange chars'; 
    

    未編碼的網址是:

    var url 'http://example.com/?first=' + first + '&second=' + second + '&third=' + third + '&fourth=' + fourth; 
    

    後來它應該像一個Ajax請求:

    xhr = new XMLHttpRequest(); 
    xhr.open('POST', url); 
    

    我試過這個:

    var url 'http://example.com/?first=' + encodeURIComponent(first); 
    

    但它不適用於#。那麼對於所有角色來說,什麼是可靠的編碼解決方案

    我不使用jQuery,只是javascript。

    +0

    據我所知,'encodeURIComponent'是用於參數的。而'encodeURI'是用於URL的#http://i.imgur.com/2xKpYd0.png在你的情況下,'#'應該使用'encodeURIComponent '(%23)當你說它不起作用時,你是什麼意思? – Pogrindis

    +0

    你必須更具體一些關於「#不適用」的含義:'encodeURIComponent('和「hash,。#$')'→'」和%20%22hash%2C。% 23%24「'。 – deceze

    +0

    您是否嘗試過使用'escape()'? –

    回答

    2

    編碼uri參數時使用encodeURIComponent。當你用這個函數對一個hashtag進行編碼時,它會產生字符串「%23」。

    所以在你的例子:

    var first = 'Hello&and'; 
    var second = "Let's have cite"; 
    var third = 'And "hash,.#$'; 
    var fourth = 'åäö other strange chars'; 
    var url = 'http://example.com/?first=' + encodeURIComponent(first) + '&second=' + encodeURIComponent(second) + '&third=' + encodeURIComponent(third) + '&fourth=' + encodeURIComponent(fourth); 
    

    將導致包含字符串的URL變量:在encodeURIComponent功能

    http://example.com/?first=Hello%26and&second=Let's%20have%20cite&third=And%20%22hash%2C.%23%24&fourth=%C3%A5%C3%A4%C3%B6%20other%20strange%20chars 
    

    更多信息,可以發現here

    (引自w3學校)此函數對特殊字符進行編碼。在 另外,它編碼以下字符:,/? :@ & = + $#

    +0

    每種情況下,每一個輸入都是可靠的嗎?還是易碎? –

    +0

    W3S引用是可怕的。「除了一堆特殊字符」之外的特殊字符。什麼是「特殊」字符? !更好地引用MDN:https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent – deceze

    +1

    @Jens該函數的設計使您可以將任意值作爲URL的一部分進行傳輸。所以,是的,它是堅實的。除非你可以證明,否則... – deceze

    -2

    您可以嘗試使用escape()函數。這爲我節省了很多次。

    escape('#')確實收益率%23

    +0

    棄用和unescape功能已棄用。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features – Pogrindis

    相關問題