Comment rediriger vers une URL


Kyle:

Je voudrais montrer au client une autre page après que les données ont été collectées à partir de la page précédente. Mais j'ai du mal à rediriger la nouvelle URL côté serveur. Voici ma logique:

  1. soumettre l'entrée utilisateur avec l'action POST au serveur;
  2. le serveur exécute la fonction saveChoice () pour enregistrer l'entrée utilisateur dans une base de données;
  3. Une fois l'entrée utilisateur enregistrée, le serveur envoie une nouvelle URL au client;
  4. Au moment où le client OBTIENT la nouvelle URL, le serveur lit la base de données et récupère les données enregistrées

Et je suis coincé sur l'étape 3 (voici un exemple du flux):

type Stuff struct{
    List []string
}

func checkcheck(w http.ResponseWriter, r *http.Request) {
    sinfo := Stuff{
        List: some_slice
    }

    t, err := template.New("").Parse(tpl_ds)
    checkErr(err)
    err = r.ParseForm()
    checkErr(err)
    err = t.Execute(w, sinfo)
    checkErr(err)

    if r.Method == "POST" {
        saveChoice(r.Form["choices"])
        /* step 3: make user open another URL */
    }
}

Et voici le modèle:

<html>
<script>
  $(function () {
    $('form').on('submit', function (e) {
      e.preventDefault();
      $.ajax({
        type: 'post',
        data: $('form').serialize(),
      });
    });
  });
</script>
<body>
  <form method="POST">
    {{range .List}}
        <input type="checkbox" name="choices" value="{{.}}"> <span>{{.}}</span><br>
    {{end}}
    <input type="submit" value="Submit">
  </form>
</body>
</html>

Puis-je savoir comment je peux rediriger vers une nouvelle page?

ps Si je mets une URL sur le bouton, le serveur ne lancera pas saveChoice ()

Aruna Herath:

Le statut http 303 est la réponse appropriée ici. Alors redirigez la demande avec elle.

if r.Method == "POST" {
    saveChoice(r.Form["choices"])
    http.Redirect(w, r, newUrl, http.StatusSeeOther)
}

Et si votre newUrlest censé renvoyer une page HTML appropriée au navigateur, vous n'avez pas besoin d'utiliser ajax. Utilisez un formulaire html.

<form action="/postHandler" method="post">
   {{range .List}}
    <input type="checkbox" name="choices" value="{{.}}"> <span>{{.}}</span><br>
   {{end}}
    <input type="submit" value="Submit">
</form>

L'avis actiondu formulaire est défini comme /postHandler. Mettez là le nom du point de terminaison qui exécute votre saveChoicefonction.

Donc, pour éviter les http: multiple response.WriteHeader callserreurs, vous utilisez ce code.

  func checkcheck(w http.ResponseWriter, r *http.Request) {
    if r.Method == "GET" {
      sinfo := Stuff{
        List: some_slice
      }

      t, err := template.New("").Parse(tpl_ds)
      checkErr(err)
      err = r.ParseForm()
      checkErr(err)
      err = t.Execute(w, sinfo)
      checkErr(err)
    }

    if r.Method == "POST" {
        saveChoice(r.Form["choices"])
        http.Redirect(w, r, newUrl, http.StatusSeeOther)
    }
  }

Sinon, le serveur tente de rendre à la fois le formulaire et l'URL redirigée, ce qui entraînera plusieurs appels à l'enregistreur de réponses.

Articles connexes


Comment rediriger vers une URL spécifique

Gamelle J'ai le code suivant: public function numbergrouppost() { $groupname = Input::get('groupname'); $no_of_members = Input::get('no_of_members'); $create = Group::create([

Comment rediriger vers une URL externe

génial Lorsque vous essayez de rediriger vers une page externe en utilisant $window.location.href, la page est simplement rafraîchissante et ne redirige pas vers l'URL attendue. Gène Alaksandar Jesus <html ng-app="myApp"> <head> </head> <body ng-controller="my

Comment rediriger des URL vers une certaine URL Django Regex

Angela Rubchinsky Dans mon URLs.py, je configure mon URL comme ceci url(r'^mobile/$', views.mobile, name='mobile') La navigation vers localhost:8000/mobilefonctionne comme prévu mais si elle est saisie dans l'URL : localhost:8000/mobile/hello/world/234234hjhf

Comment rediriger une URL de page vers une autre

sudhakaranR87 Je souhaite rediriger une page vers une autre page, comme ci-dessous. http: // dev . ****. in: 82 / abc / wp rediriger vers http: // dev . ****. in: 82 / abc / blog J'ai essayé le code ci-dessous sur .htaccess mais pas de chance. RewriteEngine On

Comment rediriger vers une URL absolue dans express js ?

samy Je voudrais rediriger vers une URL absolue comme ceci express.redirect('127.0.0.1:3000/page); Le problème est que cela produit l'URL suivante : 127.0.0.1:3000/127.0.0.1:3000/page Comment puis-je rediriger vers un chemin absolu comme décrit ci-dessus ? sa

Comment rediriger vers une URL relative htaccess Apache 2.22

ahnbizcad J'essaie de rediriger le rootdomain.com/index.phpvers rootdomain.com, et uniquement celui racine, pas les sous-répertoires se terminant également parindex.php J'ai essayé Redirect 302 ^(.*)index.php$ /$1/ Redirect 302 ^(.*)index.php$ $1/ RewriteRule

Comment rediriger vers le tableau de bord depuis une URL ?

WoJ http://traefik.my.server:8080/dashboard/J'accède actuellement au tableau de bord V2 via (Traefik s'exécute dans un conteneur Docker et 8080 est exposé à l'hôte). Je voudrais changer cela pour que le tableau de bord soit disponible àhttp://traefik.my.server

Comment rediriger vers une URL externe dans Angular2?

Michael Oryl: Quelle est la méthode pour rediriger l'utilisateur vers une URL complètement externe dans Angular 2. Par exemple, si je dois rediriger l'utilisateur vers un serveur OAuth2 afin de s'authentifier, comment le ferais-je? Location.go(), Router.naviga

En express, comment rediriger un utilisateur vers une URL externe?

Michael Joseph Aubry J'ai un système de paiement utilisant node.js et braintree, lorsque le paiement est réussi, je veux envoyer l'utilisateur vers le back-end. Mon back-end est installé ailleurs. j'ai essayé res.writeHead(301, {Location: 'http://app.example