2010-01-05 39 views
9

estoy haciendo una petición AJAX y tengo algunos problemas, este es mi código jQuery:espacios en blanco en la petición AJAX con jQuery

var url = "http://www.domain.com/SearchService.svc/search?keyword=my search keywords"; 
    $.ajax({ 
     type: "GET", 
     url: url, 
     dataType: "json"....... 
..... 

Al hacer esta solicitud a veces tengo espacios en blanco en mi búsqueda (var url) y luego se cortan las palabras clave, por lo que en el ejemplo anterior, por ejemplo, solo busca "mi". Entiendo que esta es una pregunta bastante simple y que debe ser una solución fácil. Simplemente no pudo encontrar una solución ...

¡Gracias por su ayuda!

+0

que debiera considere utilizar un formato de cadena de consulta estándar, es decir, 'http://www.domain.com/SearchService.svc?search=my keywords de búsqueda' (tenga en cuenta el signo de interrogación), que, junto con la respuesta de Pekka, es probablemente la mejor solución. – falstro

+0

actualizó la pregunta, acababa de escribir la URL incorrecta ... – Martin

Respuesta

15

Puede utilizar encodeURI:

var url = encodeURI("http://www.domain.com/SearchService.svc/search=my search keywords"); 

Esta codifica la URL y convierte los espacios en blanco y cualquier otro carácter 'seguros' para el uso de URL.

Consulte también encodeURIComponent para codificar de forma segura los datos que se insertarán en un URI.

+0

Sé que esto es probablemente muy tarde, pero acabo de ver esto cuando tuve una pregunta similar 'escape' ha sido desaprobada y reemplazada con encodeURI para esta aplicación –

+0

¡Gracias por el recordatorio! –

1

Simplemente convierta espacios en blanco en formato url. Para cada espacio en blanco utilización Char% 20 en lugar:

var url = "http://www.domain.com/SearchService.svc/search=my%20search%20keywords"; 
    $.ajax({ 
     type: "GET", 
     url: url, 
     dataType: "json"....... 
..... 

O si lo desea hacerlo de una manera más automática sólo tiene que utilizar la función de JavaScript escape() como Félix sugeridos.

+1

hay una función de JavaScript que hace esto, creo que se llama escape. – falstro

+0

@row sí, estás en lo cierto. No recuerdo el nombre de la función. – rogeriopvl

2

Puede escapar de la palabra clave de búsqueda en la URL, pero lo correcto es agregar search como parámetro a la solicitud de ajax.

var url = "http://www.domain.com/SearchService.svc/search=my search keywords"; 
    $.ajax({ 
     type: "GET", 
     url: url, 
     data: { "search" : "my search keywords" } 
     dataType: "json"....... 
+1

parece que no está utilizando una cadena de consulta estándar, por lo que no funcionaría – falstro

+0

Ahh ahora veo, tienes razón. –

1

Usted podría hacer

var url = "http://www.domain.com/SearchService.svc/search?keyword=" 
    + encodeURIComponent("my search keywords"); 

bien de escape() también podría funcionar para usted, hay situaciones en las que sólo encodeURIComponent() debe funcionar, como por personajes & = + etc.

Cuestiones relacionadas