2010-04-23 5 views
0

Qu'est-ce qui pourrait empêcher un appel AJAX de fonctionner sur le serveur hôte, alors qu'il fonctionne correctement sur l'hôte local? J'ai essayé de renvoyer une erreur de l'appel AJAX, mais tout ce que je reçois est 'indéfini'. Je ne pense pas que la méthode de page réelle est appelée puisque aucune information n'est ajoutée dans mon journal (et j'ai explicitement ajouté un appel). Je ne peux pas reproduire le problème sur ma machine locale, donc est-ce que quelqu'un sait les domaines possibles que je devrais examiner?L'appel AJAX fonctionne sur la machine locale, pas sur l'hôte

Merci

+0

Dans la version de production, essayez-vous de faire un appel inter-domaines? –

+0

Salut. Non, tout est hébergé sur mon domaine. Le .aspx appelle le webmethod dans ce code-behind particulier. – XSL

Répondre

0

J'ai réussi à le réparer. Un problème est survenu lors de l'exécution d'IIS7 en mode intégré. J'ai déplacé tous mes modules de à et mon à (également dans la section)

Espérons que cela aide quelqu'un d'autre.

More info

0

Quelle URL est dans votre navigateur, et ce que l'URL est votre appel Ajax? Frappais Les navigateurs ont des contraintes de sécurité qui n'autorisent pas les appels AJAX interdomaines. Ainsi, par exemple, si je suis le chargement d'un fichier local:

http://localhost:20080/myCustomPage.html 

et dans cette page, je fais un appel ajax à

http://search.twitter.com/search?q=test 

je recevrais un avertissement de sécurité du navigateur. Selon votre navigateur, cela peut se manifester dans une icône d'avertissement dans le coin inférieur (IE), ou une erreur dans le journal javascript (firefox).

Il existe un moyen de contourner cela dans un cas spécifique. Ce cas étant une demande GET. Pour ce faire, au lieu de faire un appel 'ajax', vous incluez une balise. Cette étiquette de script sera alors lue et chargée. La capture ici, est que l'appel doit maintenant inclure une méthode de "rappel", que vous pouvez implémenter de votre côté, qui est appelée avec le résultat de l'appel.

Ainsi, au lieu d'une réponse comme:

{ 
    "first_name": "peter", 
    "last_name": "parker" 
} 

vous devez retourner

myCallBackFunction({ 
    "first_name": "peter", 
    "last_name": "parker" 
}); 

Cet exemple utilise JSON, mais vous pouvez facilement utiliser XML, HTML ou tout autre format de résultat que tant que la fonction est appelée.

myCallbackFunction("INSERT RESPONSE TEXT HERE") 

Cette méthode est couramment dénommée JSONP et est heureusement mis en œuvre dans les bibliothèques javascript communes comme jquery du point de vue du client. Si vous contrôlez le côté serveur, vous devrez coder en dur un wrapper callBackFunction ou afficher un paramètre permettant au client de le définir. Et malheureusement, si vous ne possédez pas la bibliothèque, vous ne pouvez pas faire grand-chose à moins que le propriétaire du service ne fournisse déjà cette fonctionnalité. Heureusement, la plupart des services Web 2.0 vous permettraient de mettre en œuvre cette fonctionnalité.

+0

Merci pour la réponse. Mon URL a "http://www.mydomain.com/mypage.aspx" et la page ASPX a soit http://www.mydomain.com/mypage.aspx/mymethod ou simplement mypage.aspx/mymethod (j'ai essayé les deux). Je cours Chrome, mais même dans IE, il n'y a pas d'erreurs affichées – XSL

Questions connexes