Gli spazi vuoti nella richiesta ajax con jquery

Sto facendo una richiesta ajax e ho alcuni problemi, questo è il mio codice jquery:

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

Quando questa richiesta io a volte sono gli spazi vuoti nella mia ricerca (var url) e quindi le parole chiave ottenere tagliato così nell’esempio qui sopra, per esempio, è solo la ricerca di “mio”. Capisco che si tratta di una semplice questione e che deve essere una facile soluzione. Non riuscivo a trovare una soluzione…

Grazie per il vostro aiuto!

  • si dovrebbe considerare l’utilizzo di una query standard in formato stringa, cioè http://www.domain.com/SearchService.svc?search=my search keywords (nota il punto di domanda), che, insieme con Pekka risposta è probabilmente la soluzione migliore.
  • aggiornata la domanda, avevo appena scritto l’url sbagliato..
InformationsquelleAutor Martin | 2010-01-05

 

4 Replies
  1. 16

    È 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 “a rischio” carattere URL utilizzo.

    Vedere anche encodeURIComponent di sicurezza per la codifica di dati da inserire in un URI.

    • So che questo è probabilmente il modo in ritardo ma ho visto solo quando ho avuto un problema analogo si escape è stata eliminata e sostituita con encodeURI per questa applicazione
    • Grazie per il promemoria!
  2. 2

    Si può sfuggire la ricerca di parole chiave nell’URL, ma la cosa giusta da fare è aggiungere search come parametro per la 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".......
    • sembra che lui non utilizza uno standard di stringa di query, in modo che non avrebbe funzionato
    • Ahh ora capisco, hai ragione.
  3. 2

    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() funziona, come per i caratteri & = + etc.

  4. 1

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

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

    O se si vuole fare in modo automatico basta usare la funzione javascript escape() come Felix suggerito.

    • c’è una funzione javascript che fa questo, penso che si chiama fuga.
    • sì, hai corretto. Non riuscivo a ricordare il nome della funzione.

Lascia un commento