質問: こんにちは。 現在作成しているサイトでPHPで出力した後のHTMLソースコードですが、ローカルでは問題なく動いていたのですが、さくらのクラウドのサーバーにアップした同データのソースで下記の現象が起きました。 理論上は間違いはないかなぁとは思っているのですが、どうにも原因がわからずじまいになってしまいました。 【機能内容】 aタグの箇所をクリックすると、hiddenで隠してあるformをsubmitする機能 【現象】 ・サーバーでのみクリックしても何も反応しない ←これがいちばんの重要な問題 ・サーバーで生成したソースコードのうち、inputのtype="hidden"部分だけがなぜか自動で要素の一番後ろに生成されている(PHP生成する段階では一番後ろにはない。これに関してはさらに謎) ``` 2017-01-20 15:14:22 アイテム名 : 〇〇 期限を超過した為、この取引は自動完了されました。 2017-01-20 15:14:22 アイテム名 : 〇〇 期限を超過した為、この取引は自動完了されました。 ``` 一応ファイルパスなどのURL関係は間違ってはいませんでした。 デバッグもして見ましたが、aタグにクリックしてもやはり反応自体していませんでした。 ローカルと同じファイルである以上環境依存の問題かなぁと思っていますが、なんとか解決したいと思っております。 お力添えをいただければ幸いです。 【更新】 もしかしたらと思いましてaタグの方をこのように修正しました。 ``` ``` その場合、なぜかreturn falseにしているのに、formではなくaタグの方が反応してしまい、自身のページへ遷移してしまうことがわかりました。
回答: > > サーバーで生成したソースコードのうち、inputのtype="hidden"部分だけがなぜか自動で要素の一番後ろに生成されている(PHP生成する段階では一番後ろにはない。これに関してはさらに謎) > > > Firefoxで `Ctrl+U`(ブラウザで「ページのソースを表示」)でソースを表示するとHTMLの構文エラーが赤文字で出ます。デベロッパーツールでの表示はブラウザによって解釈された後のHTMLが表示されているため、「順番が変わる」ことがあります。 タグの閉じ忘れや不完全なタグ名、ダブルコーテーションの閉じ忘れなど、そういったことでHTMLが崩れている可能性はありませんか?