前提・実現したいこと
http://localhost:3000/items/add?
において、ajaxで投稿完了後http://localhost:3000/items
に遷移したい。
正規表現であったり、JSの便利な機能で以下のことを解決することはできますか?
発生している問題・エラーメッセージ
// 以下のURLから投稿画面に遷移する
http://localhost:3000/items
// こちらの投稿画面でajax通信をして通信成功後上記のURLに遷移したい
http://localhost:3000/items/add?
現状
ajax通信成功後itemsのindex
には遷移できましたが、URLがhttp://localhost:3000/items/
となってしまいます。
これによって、引き続き投稿画面に行こうと思ってaddへの遷移ボタンを押すとhttp://localhost:3000/items/items/add?
となってMissing Methodエラーが出てしまいます。
恐らく、遷移後のURLがhttp://localhost:3000/items/
ではなく、http://localhost:3000/items
だったら成功すると思います。
該当のソースコード
// ajax処理〜〜 success: function(responce) { var origin = location.origin // origin = "http://localhost:8000" var pathname = location.pathname // pathname = "/items/add?" var indexOfAdd = pathname.indexOf('add') // pathnameにaddが含まれてたらアプリのトップに遷移 if (indexOfAdd >= 0) { var replaceAdd = pathname.replace(/add?/, '') location.assign(origin + replaceAdd) } else{ location.reload() } }
試したこと
- ソースコードのようにlocationからpathnameを引っ張ってきて正規表現で正しいURLに遷移させるようにした。
var replaceAdd = pathname.replace(/add?/, '') location.assign(origin + replaceAdd)
items/app?
というURL自体をreplaceして/items
にしようとしましたが、他のページでも共通のコードを使っているのでそういうわけにもいきませんでした。- 本番環境のURLはlocalhostと違いpathnameは
/myapp/cake/items
のようになっています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 04:17