2016-03-18 1 views

Répondre

0

Si vous renvoyez un HTTPFound-Object, ne l'analysez pas comme JSON, mais plutôt parser est comme HTML!

1

requêtes AJAX n'affectent pas l'emplacement de la fenêtre (Je suppose que vous voulez que le navigateur accède à une toute nouvelle page suite à la requête AJAX, donc l'adresse dans la barre d'adresse du navigateur change.)

Vous pouvez le faire manuellement en JavaScript lors de la gestion de la réponse de la requête AJAX :

$.ajax(
    ... 
}.done(function (data) { 
    if (data.redirect_to) { 
     window.location = data.redirect_to; 
    } 
}); 

Dans l'exemple ci-dessus, le serveur a renvoyé le statut 200 Ok avec une réponse JSON qui ressemble à {"redirect_to": "http://localhost:4284/"}. Vous préférerez peut-être retourner un statut HTTP différent et le gérer dans le gestionnaire d'erreurs à la place.

+0

Le type HTTPFound de Pyramid-Framework est une redirection HTTP de 302 et je pense que cela conduirait à une redirection. Étrange est aussi, que ma page est en train de recharger après ajax a terminé, mais il ignore le 302. Si je dois rediriger manuellement, je le ferai. Thx –

+1

Oui, cela mène à une redirection - mais ce qui est redirigé est votre requête Ajax originale. La spécification HTTP nécessite que le navigateur suive la redirection de manière transparente et renvoie le résultat de la ressource vers laquelle les points de redirection sont redirigés. Ainsi, votre gestionnaire Ajax obtient le contenu html de la page que les points de redirection comme la réponse. – Sergey