2008-09-19 5 views
0

J'ai un problème avec le même morceau de code s'exécutant correctement sur mon site Web en direct mais pas sur mon serveur de développement local. J'ai une fonction Ajax qui met à jour un div.Pourquoi un script Ajax ne fonctionne-t-il pas localement?

Le code suivant fonctionne sur le site en direct:

self.xmlHttpReq.open("POST", PageURL, true); 
self.xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
self.xmlHttpReq.setRequestHeader("Content-length", QueryString.length); 
//..update div stuff... 
self.xmlHttpReq.send(QueryString);

Lorsque je tente de l'exécuter sur ma machine locale, rien est passé à la QueryString.

Cependant, pour compliquer les choses, le code suivant ne travail local:

self.xmlHttpReq.open("POST", PageURL+"?"+QueryString, true); 
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
//..div update stuff.. 
self.xmlHttpReq.send(QueryString);

Mais, je ne peux pas utiliser le code qui fonctionne sur ma machine locale car elle ne fonctionne pas sur le live serveur (ils ont changé leur politique sur Querystrings pour des raisons de sécurité)!

Je peux alerter la chaîne Querystring afin que je sache qu'elle est passée dans la fonction sur ma machine locale. La seule chose que je peux penser est que c'est un problème de matériel/mise à jour.

Site en direct est en cours d'exécution IIS 6 (sur une boîte WIN 2003 je pense)

site local exécute IIS 5.1 (sur XP Pro)

Y a-t-il des mises à jour ou quelque chose que je me manque quelque chose ou ?

+0

Quel navigateur utilisez-vous? – Jim

Répondre

1

Y at-il une raison pour laquelle vous définissez explicitement l'en-tête Content-Length dans le premier exemple? Vous ... ne devrait pas besoin de faire cela, et je ne serais pas surpris de le trouver causant des problèmes.

Oh, et vérifiez votre routine d'encodage. Les règles ne sont pas tout à fait la même chose pour Querystrings et les données de formulaire POSTed.

0

Je suppose que Shog9 a raison, et que IIS 6 est assez intelligent pour ignorer votre demande et envoyer les en-têtes corrects, alors que 5.2 renvoie une erreur.

Questions connexes