URL Encode une chaîne en jQuery pour une requête AJAX
Je suis la mise en œuvre de Google Recherche Instantanée dans mon application. J'aimerais déclencher des requêtes HTTP dans les types d'utilisateur dans la saisie de texte. Le seul problème que je rencontre est que lorsque l'utilisateur reçoit un espace entre les noms et les prénoms, l'espace n'est pas codé comme un +
, brisant ainsi la recherche. Comment puis-je remplacer l'espace par un +
, ou tout simplement en toute sécurité Encoder la chaîne?
$("#search").keypress(function(){
var query = "{% url accounts.views.instasearch %}?q=" + $('#tags').val();
var options = {};
$("#results").html(ajax_load).load(query);
});
- Vous pouvez utiliser
$.param
.
Vous devez vous connecter pour publier un commentaire.
Essayer encodeURIComponent.
Exemple:
encodeURIComponent fonctionne très bien pour moi. nous pouvons donner l'url comme ceci dans l'appel ajax.Le code ci-dessous:
Meilleure façon:
encodeURIComponent échappe à tous les caractères, sauf les suivantes:
alphabetic, decimal digits, - _ . ! ~ * ' ( )
Pour éviter les requêtes vers le serveur, vous devez appeler encodeURIComponent sur toute saisie par l'utilisateur paramètres qui seront passés dans le cadre d'un URI. Par exemple, un utilisateur de type "Thym &heure=nouveau" pour une variable commentaire. Pas à l'aide de encodeURIComponent sur cette variable va donner de commentaire=Thym%20&heure=de nouveau. Notez que le symbole et le signe égal marque une nouvelle clé et une valeur paire. Donc au lieu d'avoir un POST de commentaire clé, qui est égale à "Thym &heure=nouveau", vous avez deux POSTES clés, une égalité de "Thym" et une autre " (le temps) égal à nouveau.
Pour application/x-www-form-urlencoded (POST), par http://www.w3.org/TR/html401/interac...m-content-type, les espaces sont remplacés par des '+', de sorte que l'on désire suivre un encodeURIComponent de remplacement avec un supplément de remplacement de "%20" avec un "+".
Si l'on souhaite être plus strictes en respectant la RFC 3986 (qui réserve !, ', (, ), et *), même si ces personnages n'ont pas officialisé URI délimitant les utilisations, les éléments suivants peuvent être utilisés en toute sécurité:
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 "+".
Comment faire?Je suis l'aide de MVC3/EntityFramework en tant que back-end, front-end consomme tous mes contrôleurs de projet via jquery, les publier directement (à l'aide de $.post) ne marche pas besoin de données encription, lorsque vous passez des paramètres directement autres que les URL sont codées en dur.
Je l'ai déjà testé plusieurs caractères, j'ai même envoyé un URL(ce http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&de plus=1&c=1&ct=1&pb=1) en tant que paramètre et n'avait pas de problème même si encodeURIComponent fonctionne très bien quand vous transmettre toutes les données dans l'URL (codé en dur)
Codé en dur URL c'est à dire>
Sinon, ne pas utiliser encodeURIComponent et au lieu d'essayer de passer les paramètres au sein de l'ajax méthode post
essayer celui-ci