E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale Javascript

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  Javascript  /  Navigare (2)

URLencode si URLdecode cu JavaScript

24.07.2008
URLencode si URLdecode cu JavaScript

Urlencodarea se face pentru a inlocui caracterele permise non URL cu caractere permise URL intr-un sir. Acest lucru se face de obicei cand fie cand parametrii GET trec prin browserul URL, fie cand datele trec prin AJAX. Javascript furnizeaza diverse functii pentru a implementa aceasta functionalitate

Total vizualizari: 5660 5660 afisari   |   Comentarii  1   |   Rating   |   (0 voturi)   |   Timp necesar: 15 min 15 min   |   Nivel de cunostiinte necesar: Incepator  Incepator

Sursa:  www.mabaloo.com  
Autor:  Girish Singh
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1
comenteaza printeaza

Urlencodarea se face pentru a inlocui caracterele permise non URL cu caractere permise URL intr-un sir. Acest lucru se face de obicei cand fie cand parametrii GET trec prin browserul URL, fie cand datele trec prin AJAX. Javascript furnizeaza diverse functii pentru a implementa aceasta functionalitate

escape(string) - Aceasta functie este folosita pentru a siruri. Functia escape() codifica caractere speciale, cu exceptia lui * @ - _ + . /
unescape(string) ar trebui folosita pentru a decodifica sirul (string) codificat de catre functia escape.

De exemplu

var str = "hello34ad#4"; 
alert(escape(str)); 
alert(unescape(str));

Te rog ia aminte la faptul ca nu se recomanda sa codifici URI cu escape, ci trebui sa folosim functiile listate mai jos.

encodeURI(string) - Functia encodeURI() codifica un sir ca un URI. Functia encodeURI() codifica caractere speciale, cu exceptia: , / ? : @ & = + $ #. Foloseste functia decodeURI() pentru a decoda URI-urile codificate cu encodeURI().

De exemplu

var str = 'http://www.yahoo.com'; 
alert(encodeURI(str)); 
alert(decodeURI(str));

encodeURIComponent(string) - Functia encodeURI() codifica un sir ca o componenta a unui URI. Aceasta functie nu prezinta nici o exceptie. Foloseste functia decodeURIComponent(string) pentru a decodifica URI-ul codificat cu aceasta functie.

Problema cu functiile Javascript Encoding

Desi JavaScript a furnizat numeroase functii de codificare si decodificare url, exista o problema inerenta tuturor acestora, anume ca nu sunt compatibile cu functiile PHP urlencode si urldecode.

Aceasta problema devine in special un inconvenient atunci cand folosim ajax ca punte de comunicare intre JavaScript si PHP. Functiile standard JavaScript opereaza usor diferit: ele codifica spatiul ca "%20", si trateaza "+" ca si caracter permis. Totusi, putem scrie o functie JavaScript care sa regleze aceasta problema. Cele doua functii date mai jos pot codifica si decodifica URL-ul intr-o maniera similara analoagelor lor PHP.

function URLEncode(url){ //Function to encode URL. 
    // Functiile Javascript escape si unescape nu corespund  
    // cu ceea ce fac de fapt browserele... 
    var SAFECHARS = "0123456789" + // Numeric 
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic 
    "abcdefghijklmnopqrstuvwxyz" + 
    "-_.!~*'()"; // RFC2396 Mark characters 
    var HEX = "0123456789ABCDEF";
 
    var plaintext = url; 
    var encoded = ""; 
    for (var i = 0; i < plaintext.length; i++ ) { 
        var ch = plaintext.charAt(i); 
        if (ch == " ") { 
            encoded += "+"; // x-www-urlencoded, mai degraba, decat %20 
        } else if (SAFECHARS.indexOf(ch) != -1) { 
            encoded += ch; 
        } else { 
            var charCode = ch.charCodeAt(0); 
            if (charCode > 255) { 
                alert( "Unicode Character '"  + ch 
                + "' cannot be encoded using standard URL encoding.\n"  
                + "(URL encoding only supports 8-bit characters.)\n" 
                + "A space (+) will be substituted." ); 
                encoded += "+"; 
            } else { 
                encoded += "%"; 
                encoded += HEX.charAt((charCode >> 4) & 0xF); 
                encoded += HEX.charAt(charCode & 0xF); 
            } 
        } 
    }
    return encoded; 
}
 
function URLDecode(url){ //functia decode URL 
    // Inlocuieste + cu ' ' 
    // Inlocuieste %xx cu caracterul echivalent 
    // Trece [ERROR] ca iesire daca %xx nu este valid. 
    var HEXCHARS = "0123456789ABCDEFabcdef";  
    var encoded = url; 
    var plaintext = ""; 
    var i = 0; 
    while (i < encoded.length) { 
        var ch = encoded.charAt(i); 
        if (ch == "+") { 
            plaintext += " "; 
            i++; 
        } else if (ch == "%") { 
            if (i < (encoded.length-2)  
                && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1  
                && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) { 
                plaintext += unescape( encoded.substr(i,3) ); 
                i += 3; 
            } else { 
                alert( 'Bad escape combination near ...' 
                + encoded.substr(i) ); 
                plaintext += "%[ERROR]"; 
                i++; 
            } 
        } else { 
            plaintext += ch; 
            i++; 
        } 
    } // cat timp returneaza text simplu; 
}
Pagina:
1
comenteaza printeaza
Alte tutoriale Javascript:
Noteaza acest tutorial
Rating tutorial
 
(0 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (1) spune-ti parerea
mihai , Duminica, 15 Martie 2009
#1

La functia URLDecode de mai sus lipseste instructiunea "return plaintext;" de dupa bulca while.
Functiile nu functioneaza pe seturi de caractere UTF-8, in timp ce functiile php urlencode functioneaza si pe UTF-8

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5455
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
5450
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
5275
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
5260
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
5010
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Javascript Java PHP COREL DRAW Sony Vegas Swift 3D XHTML Vista Python AJAX RoR CSS JSON Word XML HTML Gimp Fotografie Action Script Lightroom PSD Dreamweaver Outlook Excel Bridge Flash Photoshop SEO Ruby on Rails Fireworks SWF Illustrator StyleSheet MySQL Powerpoint Verilog
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software