2010-07-13 3 views
1

Si je comprends bien et que je l'ai utilisé, AJAX est utilisé pour faire des requêtes du client au serveur et pour ensuite mettre à jour un DIV HTML sur le client avec un nouveau contenu.Utilisation d'ajax pour appeler une servlet

Toutefois, je souhaite utiliser AJAX d'un client vers une servlet pour vérifier l'existence d'une URL. Si le résultat est mauvais, je peux définir un message d'erreur dans le servlet et le retourner à la page du client pour l'affichage.

Mais est-ce que quelqu'un sait si, dans le cas d'un résultat positif, mon servlet peut afficher automatiquement une autre page (la suivante) à l'utilisateur? Ou cette demande doit-elle être déclenchée par Javascript sur le client lorsque les résultats positifs sont reçus.

Remerciements

Mr Morgan.

Répondre

0

Dans votre rappel de succès (sur le client), définissez le self.location.href à la nouvelle URL.

+0

Merci. Il fonctionne très bien. J'ai essayé cela à travers le servlet et il a affiché la page appelée sur la page d'appel. Mais self.location.href a bien fonctionné. –

0

HTML est une technologie "pull": Rien ne s'affiche dans le navigateur que le navigateur n'a pas précédemment demandé au serveur. Par conséquent, vous n'avez pas la possibilité de "faire en sorte que le servlet affiche automatiquement une page différente". Vous devez parler à votre navigateur (de JavaScript) en demandant une page différente.

1

Depuis votre appel ajax est exécuté dans l'arrière-plan le résultat renvoyé par le servlet, retourne à l'appel ajax, qui devrait alors agir en conséquence au résultat. par exemple. déclencher l'affichage d'une autre page. (Qui aurait pu être déjà dans la réponse ajax et vous pouvez le montrer dans un div ou iframe ou ...)

1

Selon le W3 specification, XMLHttpRequest force le navigateur Web vers le nouvel emplacement lorsque le serveur retourne un fullworthy 301/302 redirige et le Same Origin Policy de la nouvelle demande est rempli. Cela échoue cependant dans certains navigateurs comme certaines versions de Google Chrome.

Pour obtenir le meilleur résultat du navigateur, même lorsque l'URL redirigée ne répond pas aux règles Politique de même origine, vous devez plutôt remplacer l'emplacement par le côté JavaScript. Vous pouvez éventuellement laisser votre servlet envoyer le statut et la nouvelle URL souhaitée. Par exemple.

Map<String, Object> map = new HashMap<String, Object>(); 
map.put("redirect", true); 
map.put("location", "http://stackoverflow.com"); 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
resposne.getWriter().write(new Gson().toJson(map)); 

(qui est Gson par la voie Google Gson qui facilite la conversion des objets Java à JSON)

puis dans le gestionnaire de rappel de succès Ajax JS:

if (response.redirect) { 
    window.location = response.location; 
} 
+0

Je viens d'essayer l'installation dans Chrome, IE, Opera, Safari et Firefox et tout semble bien. mais il reste encore beaucoup à faire, je vais garder cela à l'esprit. –

+0

Je ne compterais pas dessus, vous pourriez également dépendre de la version du navigateur. Faites simplement la redirection dans JS en utilisant 'window.location'. – BalusC

Questions connexes