ローカルでは動いていたのに、アップロードしてSSL化したらJavaScriptが動かない…。
httpとhttpsを混在させない
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
http
と書いているのが原因。
コピペしてしまっていたのであまり意識していなかったが、ここでGoogleのCDN (Content Delivery Network)上のJQueryを呼び出している。これがhttp通信になっていた。デベロッパーツールで見るとMixed Content
という警告が出ていた。
「https」によるSSL暗号通信下では、安全のため「http」通信の読み込みをブロックすることがあります。つまり、Webページ内で「http」通信をしていると上手く動作しないということです。
解決策
解決策は3つ。
http
をhttps
に書き換えるhttp:
を消してしまう
こんな感じsrc="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"
- JQueryをダウンロードしてくる(CDNを使わないようにする)
1か2が簡単そう。しばらくはhttps
でもいいかな。
これがまた別のプロトコルに変わるときが来たら、ここ以外にも対応が必要になるはず。
(って言いながら2にしてみた)