2009-10-16 4 views
1

J'ai un formulaire pour 'créer un tag'. En utilisant le code jQuery ci-dessous.jquery chaîne de fin à l'espace

$("#createtag").submit(function() { //same as above, but for form submit instead of button click 
    var newtag  = $('#newtag').attr('value'); 
    var type_id  = $('#type_id').attr('value'); 
    var company_id  = $('#company_id').attr('value'); 
     $('#createtag').load("../contacts/action_createtag.php?newtag="+ newtag + "&type_id=" + type_id + "&company_id=" + company_id).append('#createtags'); 
    return false; 
    }); 

Mais je viens de réaliser, si la variable 'newtag' inclut un espace, c'est là que ça se terminera. Regarder à travers Firebug, s'il y a pas d'espace les paramètres apparaissent comme ceci:

company_id 5495 
newtag test 
type_id 2 

Mais quand un espace est entré, il apparaît comme ceci:

newtag test 

Quelqu'un sait-il pourquoi cela pourrait se produire? Pourquoi ne transmet-il pas les variables appropriées à la page chargée?

Merci d'avance!

Ryan

Répondre

11

Utilisez encodeURIComponent() sur les valeurs:

$('#createtag').load("../contacts/action_createtag.php?newtag="+ 
    encodeURIComponent(newtag) + "&type_id=" + encodeURIComponent(type_id) + 
    "&company_id=" + encodeURIComponent(company_id)).append('#createtags'); 
+0

m'a sauvé un million d'heures .. – Fergus

1

Je pense que vous devez encoder votre espace comme %20 dans l'URL parce que si vous passez comme un espace, il marquera la fin de l'URL. Je ne pense pas que la charge de jQuery fasse n'importe quel type de caractère spécial s'échapper par lui-même.

+0

l'espace est le problème dans cet exemple, mais si quelqu'un a mis une esperluette dans le domaine? – nickf

1

Coder votre valeur newTag avec encodeURI()

$('#createtag').load("../contacts/action_createtag.php?newtag="+ encodeURI(newtag) + "&type_id=" + encodeURI(type_id) + "&company_id=" + encodeURI(company_id)).append('#createtags'); 
Questions connexes