Estoy implementando la Búsqueda instantánea de Google en mi aplicación. Me gustaría disparar las solicitudes HTTP a medida que el usuario escribe en la entrada de texto. El único problema que tengo es que cuando el usuario llega a un espacio entre el nombre y el apellido, el espacio no se codifica como a +
, lo que interrumpe la búsqueda. ¿Cómo puedo reemplazar el espacio con un +
, o simplemente URL codificar la cadena de forma segura?
$("#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
fuente
fuente
$.param
.Respuestas:
Prueba encodeURIComponent .
Ejemplo:
fuente
encodeURIComponent funciona bien para mí. podemos dar la url como esta en la llamada ajax. El código que se muestra a continuación:
fuente
Mejor manera:
encodeURIComponent escapa a todos los caracteres excepto los siguientes:
alphabetic, decimal digits, - _ . ! ~ * ' ( )
Para evitar solicitudes inesperadas al servidor, debe llamar a encodeURIComponent en cualquier parámetro ingresado por el usuario que se pasará como parte de un URI. Por ejemplo, un usuario podría escribir "Tomillo y tiempo = nuevamente" para un comentario variable. No usar encodeURIComponent en esta variable dará comentario = Thyme% 20 & time = nuevamente. Tenga en cuenta que el signo y el signo igual marcan un nuevo par de clave y valor. Entonces, en lugar de tener una clave de comentario POST igual a "Tomillo y tiempo = otra vez", tiene dos claves POST, una igual a "Tomillo" y otra (tiempo) igual a otra vez.
Para la aplicación / x-www-form-urlencoded (POST), según http://www.w3.org/TR/html401/interac...m-content-type , los espacios deben reemplazarse por '+', por lo que uno puede desear seguir un reemplazo encodeURIComponent con un reemplazo adicional de "% 20" con "+".
Si se desea ser más estricto al adherirse a RFC 3986 (que se reserva!, ', (,) Y *), a pesar de que estos caracteres no tienen usos formales de delimitación de URI, se puede usar de manera segura:
fuente
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 "+".
¿Cómo se hace esto?Estoy usando MVC3 / EntityFramework como back-end, el front-end consume todos mis controladores de proyecto a través de jquery, publicar directamente (usando $ .post) no requiere la encriptación de datos, cuando pasas parámetros directamente que no sean URL codificados. Ya probé varios caracteres, incluso envié una URL (esta http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&more=1&c=1&tb=1&pb=1 ) como parámetro y tenía no hay ningún problema a pesar de que encodeURIComponent funciona muy bien cuando pasa todos los datos dentro de la URL (codificado)
URL codificada, es decir>
De lo contrario, no use encodeURIComponent e intente pasar parámetros dentro del método de publicación ajax
fuente
prueba este
fuente