2008-12-21 9 views
0

Ce codeconstruire Dynamiquement comportement querystring dans IE et FF/Chrome

function LoadContent(Id) { 
     alert('Controls/Network/NetworkDetail.aspx?' + rnd() + '&CtlId=' + Id); 
     $.get('Controls/Network/NetworkDetail.aspx?' + rnd() + '&CtlId=' + Id, function(data) { 
      $(Id).append(data); 
     }); 
     $(Id).removeClass("Waiting"); 
} 

fonctionne parfaitement dans IE7. l'alerte affichée la chaîne de requête, et la page NetworkDetail.aspx peut obtenir le CtlId en utilisant Request.QueryString ["CtlId"]

Cependant, en utilisant FF3 et Chrome, Request.QueryString ["CtlId"] renvoie null mais l'alerte affiche le Querystring correctement (pas de différence avec IE7).

la valeur Id est généralement '# Tab1', ou "# Tab2"

Toute idée sur la façon de construire correctement querystring?

Répondre

5

Le # indique une ancre nommée en HTML et est donc pas partie de la chaîne de requête, à juste titre peut-être vous Sould URL encodez vos id.

par exemple. # Tab1 devient% 35Tab1

Essayez d'utiliser évasion. par exemple.

'Commandes/Réseau/NetworkDetail.aspx? + Rnd() + '& CtlId =' + escape (Id)

+0

Vous avez raison. '#' mess mon code. Mais encore, les caprices de navigateur comme ceci est exactement pourquoi je déteste le développement de javascript. – Salamander2007

+0

IE ne devrait pas avoir envoyé la partie # de l'URL, car elle est destinée au navigateur et non au serveur, mais je vois leur point. BTW, en utilisant l'échappement, surmonte également tous les problèmes si d'autres caractères d'URL apparaissent dans l'ID (comme & ou?). – Ady

Questions connexes