URL Zakódujte řetězec v jQuery pro požadavek AJAX

Implementuji do své aplikace Okamžité vyhledávání Google. Chtěl bych spouštět požadavky HTTP, když uživatel zadává text. Jediný problém, který mám, je ten, že když se uživatel dostane do mezery mezi jménem a příjmením, mezera není zakódována jako + , čímž bylo přerušeno hledání. Jak mohu nahradit mezeru + , nebo jen bezpečně URL zakódovat řetězec?

$("#search").keypress(function(){       
    var query = "{% url accounts.views.instasearch  %}?q=" + $('#tags').val();
    var options = {};
    $("#results").html(ajax_load).load(query);
});

Odpověď

Zkuste encodeURIComponent.

Kóduje komponentu URI (Uniform Resource Identifier) ​​tak, že každou instanci určitých znaků nahradí jednou, dvěma, třemi nebo čtyřmi escape sekvencemi reprezentujícími kódování UTF-8 znaku (budou to pouze čtyři sekvence escape pro znaky složené ze dvou „náhradních ” znaky).

Příklad:

var encoded = encodeURIComponent(str);