2010-01-05 12 views
9

Je fais une demande de paiement ajax et j'ai quelques problèmes, voici mon code jquery:espaces vides dans la demande ajax avec jquery

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

Lors de cette demande, j'ai parfois des espaces vides dans ma recherche (var url) puis les mots-clés sont coupés dans l'exemple ci-dessus, par exemple, il cherche juste "mon". Je comprends que c'est une question assez simple et que cela doit être une solution facile. Juste ne pourrait pas trouver une solution ...

Merci pour votre aide!

+0

vous devriez envisager d'utiliser un format de chaîne de requête standard, c'est à dire 'http://www.domain.com/SearchService.svc?search=my mots-clés de recherche» (notez le point d'interrogation), que, avec la réponse de Pekka est probablement la meilleure solution. – falstro

+0

mis à jour la question, venait d'écrire la mauvaise url .. – Martin

Répondre

15

Vous pouvez utiliser encodeURI:

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

Cette encode l'URL et convertit les blancs et tout autre caractère 'dangereux' pour l'utilisation des URL.

Voir aussi encodeURIComponent pour coder en toute sécurité les données à insérer dans un URI.

+0

Je sais que c'est probablement très tard mais je viens de le voir quand j'ai eu une question similaire 'escape' a été dépréciée et remplacée par encodeURI pour cette application –

+0

Merci pour le rappel! –

1

Convertissez simplement les espaces en format URL. Pour chaque utilisation des espaces char% 20 à la place:

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

Ou si vous voulez faire d'une manière plus automatique il suffit d'utiliser la fonction javascript escape() comme Felix suggéré.

+1

il ya une fonction javascript qui fait cela, je pense que cela s'appelle évasion. – falstro

+0

@row oui vous avez raison. Je ne pouvais pas me souvenir du nom de la fonction. – rogeriopvl

2

Vous pouvez échapper le mot-clé de recherche dans l'URL, mais la bonne chose à faire est d'ajouter search en tant que paramètre à la requête 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

il semble qu'il n'utilise pas une chaîne de requête standard, donc cela ne fonctionnerait pas – falstro

+0

Ahh je vois maintenant, vous avez raison. –

1

Vous pouvez faire

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

Tout escape() pourrait aussi bien travailler pour vous, il y a des situations qui ne encodeURIComponent() fonctionnera, comme pour les caractères & = + etc.

Questions connexes