2010-12-14 8 views
2

J'ai un site Web qui permet essentiellement aux clients de construire un panier avec un élément qui peut être configuré. Un utilisateur choisira un article, et il lui sera demandé de choisir la première option qu'il souhaite, il sera envoyé à la deuxième étape où il choisira sa deuxième option, etc.Quelle est la bonne façon de gérer plusieurs redirections automatiques?

Le nombre d'étapes et le nombre d'options sont variables, car ils sont définis par le client. Habituellement, l'article n'a que 2-3 étapes avec 5-10 options. Cependant, afin de le rendre plus rapide pour le client, s'il n'y a qu'une seule option disponible pour l'étape donnée, elle sera automatiquement choisie et l'utilisateur sera envoyé à l'étape suivante.

Un client a décidé de configurer un élément avec plus de 10 étapes avec une seule option pour chaque étape. Il en résulte que l'ensemble du processus sélectionne automatiquement tout. FireFox n'aime pas, car il donne l'erreur

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui ne sera jamais complète.

(Je n'ai pas vérifié IE ou Chrome, bien qu'il donne probablement des erreurs similaires).

Quelle est la meilleure façon de résoudre ce problème?

En ce moment, le processus est essentiellement

  1. utilisateur prend article
  2. utilisateur choisit option s'il y a plus d'une option disponible. Sinon, le site Web fait l'étape 3 lui-même.
  3. POST pour ajouter l'option au panier
  4. Redirect à Page.aspx?step=#
  5. Répétez l'étape 2-4 autant de fois que nécessaire

est-il des changements que je peux apporter au code ou page afin que FireFox ne pense pas que je suis dans une boucle sans fin?

Répondre

4

Je suis surpris que vous obtenez une erreur de redirection sans fin si # est différent à chaque fois, mais de toute façon, cela ne semble pas être la meilleure architecture. Fondamentalement, si le code décide qu'une étape peut être faite automatiquement, il redirige instantanément vers la même page avec le nouveau numéro d'étape? Pourquoi ne faites-vous pas que votre code le fasse sans rediriger, incrémenter le numéro de page dans le code du serveur si nécessaire, et leur montrer la bonne étape directement, sans avoir à rediriger?

Tout ce qui se passe lorsque vous POST à ​​chaque étape, je pense que vous pouvez accomplir tout aussi facilement dans le code sans avoir à faire un nouveau poste.

1

Je devine que quelque chose comme ça fonctionnerait:

  1. Lire Étape de chaîne de requête dans la variable locale
  2. Charger les données de base de données qui passent à l'étape variable locale
  3. Si les données ne contient une option alors:
    (3.1) Option de magasin
    (3.2) incrément variable locale
    (3.3) goto 2

  4. Charg avec les données de l'étape 2


Comment votre code de gestion quelqu'un sauter les options et en entrant Page.aspx? step = 10 dans la barre d'adresse lorsqu'ils sont sur Page.aspx? step = 1?

+0

Le site vérifiera que s'il sont à l'étape 10, les étapes 1 à 9 ont été marquées comme terminées. Sinon, ils sont renvoyés à la première étape inachevée. – Brandon

+0

Dans ce cas, il semble que l'inclusion de la page # dans l'url ne fait que compliquer les choses, si la copie du serveur est de toute façon le maître. – Greg

Questions connexes