2010-01-05 25 views
9

sto facendo una richiesta AJAX e ho alcuni problemi, questo è il mio codice jQuery:spazi vuoti a richiesta Ajax con jQuery

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

Quando si effettua questa richiesta volte ho spazi vuoti nella mia ricerca (var url) e quindi le parole chiave vengono tagliate così nell'esempio sopra, per esempio cerca solo "my". Capisco che questa è una domanda abbastanza semplice e che deve essere una soluzione facile. Proprio non riuscivo a trovare una soluzione ...

Grazie per il vostro aiuto!

+0

si dovrebbe considera l'utilizzo di un formato di stringa di query standard, ad esempio 'http://www.domain.com/SearchService.svc?search=my parole chiave di ricerca '(nota il punto interrogativo), che, insieme alla risposta di Pekka, è probabilmente la soluzione migliore. – falstro

+0

ha aggiornato la domanda, aveva appena scritto l'URL errato .. – Martin

risposta

15

È possibile utilizzare encodeURI:

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

Questa codifica l'URL e converte gli spazi vuoti e qualsiasi altro carattere 'non sicuro' per l'utilizzo di URL.

Vedere anche encodeURIComponent per la codifica sicura dei dati da inserire in un URI.

+0

So che probabilmente è molto tardi, ma ho appena visto questo quando ho avuto una simile domanda 'escape' è stato deprecato e sostituito con encodeURI per questa applicazione –

+0

Grazie per il promemoria! –

1

Basta convertire gli spazi bianchi in formato url. Per ogni spazio bianco uso char% 20 invece:

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

Oppure, se si vuole fare in un modo più automatico basta usare la funzione javascript escape() come Felix suggerito.

+1

c'è una funzione javascript che fa questo, penso che si chiami escape. – falstro

+0

@row si hai ragione. Non riuscivo a ricordare il nome della funzione. – rogeriopvl

2

È possibile evitare la parola chiave di ricerca nell'URL ma la cosa giusta da fare è aggiungere search come parametro alla richiesta 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

sembra che non stia usando una stringa di query standard, quindi non funzionerebbe – falstro

+0

Ahh, ora capisco, hai ragione. –

1

Si potrebbe fare

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

Mentre escape() potrebbe anche funzionare per voi, ci sono situazioni che solo encodeURIComponent() funzionerà, come ad esempio per i caratteri & = + ecc