はじめに
質問を読んでくださりありがとうございます。
Go言語でCRUDアクションのWeb Applicationを作っています。
ブラウザのフォームからJSONで送信してバックエンドのGOで受け取り構造体にマッピングした処理をした後、別ページへ遷移させたいのですが、うまくいきません。
エラー内容
http.Redirect
を使ってページを指定のページへ遷移させようとしていますが、URL変わらず同じページがリダイレクトされるだけです。エラーハンドリングは出来ていません。
期待する処理
POSTしたあとに自動的に指定するURLへ遷移してほしいです。
コード
go
1type Sample struct { 2 Name string 3 Age int 4}
go
1 2func Create(w http.ResponseWriter, r *http.Request) { 3 // init 4 var f Sample 5 // json to struct 6 err := json.NewDecoder(r.Body).Decode(&f) 7 if err != nil { 8 log.Fatalln(err) 9 } 10 fmt.Println(f) 11 http.Redirect(w, r, "http://localhost:8080/sample/", 301) 12} 13 14func main() { 15 mux := http.NewServeMux() 16 // 下記で js, css を読み込ませる。 17 files := http.FileServer(http.Dir("assets")) 18 mux.Handle("/static/", http.StripPrefix("/static/", files)) 19 20 // このURLへ遷移させたい。 21 mux.HandleFunc("/sample/", Show) 22 // Formはここから送信されます。 23 mux.HandleFunc("/sample/new", New) 24 // JSでバックエンドでこのURLのリクエストしています。 25 mux.HandleFunc("/sample/create", Create) 26 server := http.Server{ 27 Addr: fmt.Sprintf("127.0.0.1:%v", config.Config.Port), 28 Handler: mux, 29 } 30 err := server.ListenAndServe() 31 if err != nil { 32 log.Fatalln(err) 33 } 34}
フォームをJSで送信しています。
/sample/new/
のページからJSで/sample/create/
のリクエストを送ります。
Create
の処理が最後まで行けば指定のページ先へ遷移するはずがしません。
リダイレクトの処理以外はうまく行われています。
js
1$(function () { 2 function FormSend (e) { 3 e.preventDefault(); 4 $("#Form").on('submit', function () { 5 $("#Form").attr("disable", true); 6 let data = { 7 name: $("#Name").val(), 8 age: $("#Age").val() 9 }; 10 $.ajax({ 11 method: 'post', 12 url: '/sample/create', 13 data:JSON.stringify(data), 14 dataType: 'json', 15 contentType: "application/json", 16 timeout: 10000, 17 }) 18 .done((data) => { 19 console.log(data); 20 }) 21 .fail((error) => { 22 console.error(error); 23 }) 24 .always(() => { 25 $("#Form").attr("disable", false); 26 }); 27 }); 28 } 29 FormSend(); 30 return false 31}); 32
お願いしたいこと
エラーハンドリングが出来ていないためになぜページ遷移しないか原因がよくわかっていません。なので、WebAppdがブラウザのフォームからJSON POSTを受け取った後に指定のページへ遷移する方法を教えていただきたいです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/11 02:27