Estou implementando a Pesquisa instantânea do Google no meu aplicativo. Eu gostaria de disparar solicitações HTTP à medida que o usuário digita a entrada de texto. O único problema que estou tendo é que, quando o usuário chega a um espaço entre o nome e o sobrenome, o espaço não é codificado como a +
, interrompendo a pesquisa. Como posso substituir o espaço por um +
, ou apenas com segurança URL, codificar a sequência?
$("#search").keypress(function(){
var query = "{% url accounts.views.instasearch %}?q=" + $('#tags').val();
var options = {};
$("#results").html(ajax_load).load(query);
});
javascript
jquery
ajax
http
Brian D
fonte
fonte
$.param
.Respostas:
Tente encodeURIComponent .
Exemplo:
fonte
encodeURIComponent funciona bem para mim. podemos fornecer o URL desta forma na chamada ajax. O código mostrado abaixo:
fonte
Melhor maneira:
encodeURIComponent escapa todos os caracteres, exceto o seguinte:
alphabetic, decimal digits, - _ . ! ~ * ' ( )
Para evitar solicitações inesperadas ao servidor, você deve chamar encodeURIComponent em quaisquer parâmetros inseridos pelo usuário que serão passados como parte de um URI. Por exemplo, um usuário pode digitar "Tomilho e hora = novamente" para um comentário variável. Não usar encodeURIComponent nessa variável dará o comentário = Tomilho% 20 & time = novamente. Observe que o e comercial e o sinal de igual marcam um novo par de chave e valor. Portanto, em vez de ter uma chave de comentário POST igual a "Tomilho e hora = novamente", você tem duas chaves POST, uma igual a "Tomilho" e outra (hora) igual a novamente.
Para application / x-www-form-urlencoded (POST), por http://www.w3.org/TR/html401/interac...m-content-type , os espaços devem ser substituídos por '+', portanto pode-se desejar seguir uma substituição de cododeURIComponent por uma substituição adicional de "% 20" por "+".
Se você deseja ser mais rigoroso ao seguir a RFC 3986 (que reserva!, ', (,) E *), mesmo que esses caracteres não tenham usos formalizados para delimitar URI, o seguinte pode ser usado com segurança:
fonte
For application/x-www-form-urlencoded (POST), per http://www.w3.org/TR/html401/interac...m-content-type, spaces are to be replaced by '+', so one may wish to follow a encodeURIComponent replacement with an additional replacement of "%20" with "+".
Como se faz isso?Estou usando o MVC3 / EntityFramework como back-end, o front-end consome todos os meus controladores de projeto via jquery, postando diretamente (usando $ .post) não requer a inscrição de dados, quando você passa parâmetros diretamente além do URL codificado. Eu já testei vários caracteres e até enviei um URL (este http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&more=1&c=1&tb=1&pb=1 ) como parâmetro e tinha nenhum problema, mesmo que o encodeURIComponent funcione bem quando você passar todos os dados no URL (codificado)
URL codificado, ou seja,>
Caso contrário, não use encodeURIComponent e tente passar parâmetros dentro do método ajax post
fonte
tente este
fonte