質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

6回答

7374閲覧

onclickイベントが反応しない

omusoba-san

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/02/10 02:51

編集2017/02/10 03:24

こんにちは。
現在作成しているサイトでPHPで出力した後のHTMLソースコードですが、ローカルでは問題なく動いていたのですが、さくらのクラウドのサーバーにアップした同データのソースで下記の現象が起きました。
理論上は間違いはないかなぁとは思っているのですが、どうにも原因がわからずじまいになってしまいました。

【機能内容】
aタグの箇所をクリックすると、hiddenで隠してあるformをsubmitする機能

【現象】
・サーバーでのみクリックしても何も反応しない ←これがいちばんの重要な問題
・サーバーで生成したソースコードのうち、inputのtype="hidden"部分だけがなぜか自動で要素の一番後ろに生成されている(PHP生成する段階では一番後ろにはない。これに関してはさらに謎)

HTML

1 2<!--ローカル環境--> 3<div class="st_list-item list-item-container" modifier="chevron"> 4 <a href="#" onclick="document.changesite.submit()"> 5 <div class="notice_img"> 6 <img src="site_icon_1.png" alt="site_icon"> 7 </div> 8 <div class="notice_date">2017-01-20 15:14:22</div> 9 <div class="notice_title"> 10 <span style="color:black;">アイテム名 : 〇〇</span> 11 </div> 12 <div class="notice_content">期限を超過した為、この取引は自動完了されました。</div> 13 </a> 14</div> 15 16<form action="ローカルホストアドレス+phpファイルパス" method="POST" name="changesite" id="changesite" type="submit"> 17 <input name="redirect_to" type="hidden" value="アイテムページ"> 18 <input name="a" type="hidden" value="login"> 19 <input name="access_token" id="access_token" type="hidden" value="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9."> 20 <input name="log" id="log" type="hidden" value="09000000000"> 21 <input name="rememberme" type="hidden" id="rememberme" value="forever"> 22</form> 23 24 25 26<!--サーバー環境--> 27<div class="st_list-item list-item-container" modifier="chevron"> 28 <a href="#" onclick="document.changesite.submit()"> 29 <div class="notice_img"> 30 <img src="site_icon_1.png" alt="site_icon"> 31 </div> 32 <div class="notice_date">2017-01-20 15:14:22</div> 33 <div class="notice_title"> 34 <span style="color:black;">アイテム名 : 〇〇</span> 35 </div> 36 <div class="notice_content">期限を超過した為、この取引は自動完了されました。</div> 37 </a> 38</div> 39 40<form action="サーバーアドレス+phpファイルパス" method="POST" name="changesite" id="changesite" type="submit"> 41 <input name="redirect_to" value="アイテムページ" type="hidden"> 42 <input name="a" value="login" type="hidden"> 43 <input name="access_token" id="access_token" value="yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9." type="hidden"> 44 <input name="log" id="log" value="09000000000" type="hidden"> 45 <input name="rememberme" id="rememberme" value="forever" type="hidden"> 46</form>

一応ファイルパスなどのURL関係は間違ってはいませんでした。
デバッグもして見ましたが、aタグにクリックしてもやはり反応自体していませんでした。

ローカルと同じファイルである以上環境依存の問題かなぁと思っていますが、なんとか解決したいと思っております。
お力添えをいただければ幸いです。

【更新】
もしかしたらと思いましてaタグの方をこのように修正しました。

HTML

1<!--修正前--> 2<a href="#" onclick="document.changesite.submit()"> 3 4<!--修正後--> 5<a href="" onclick="document.changesite.submit();return false;">

その場合、なぜかreturn falseにしているのに、formではなくaタグの方が反応してしまい、自身のページへ遷移してしまうことがわかりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omusoba-san

2017/02/10 03:03

FireFoxのデベロッパーツールをいつも使用しておりますが、webコンソールで見ても、特にエラー表記はありませんでした。aタグを押下しても、その後のPOST送信も行われていません。
guest

回答6

0

ローカルとリモートの<a>タグのEvent Listenersを比べてみてはいかがでしょうか。(開発者ツールから確認できます)なんのアクションもないとなるとsubmitとかclickとかのEventに差分がでてそう。

投稿2017/02/10 05:57

Neko_doshi

総合スコア214

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Neko_doshi

2017/02/10 06:50

あ、あと、気になったんですが。 プロパティの並び順もformはぜんぜん違うんですがリモートとローカルは同期ちゃんと取れているのでしょうか。 あとはaccess_tokenのvalueが若干違う(先頭にeがついているかいないか)んですがこれは関係ないですか?
guest

0

ベストアンサー

サーバーで生成したソースコードのうち、inputのtype="hidden"部分だけがなぜか自動で要素の一番後ろに生成されている(PHP生成する段階では一番後ろにはない。これに関してはさらに謎)

Firefoxで Ctrl+U(ブラウザで「ページのソースを表示」)でソースを表示するとHTMLの構文エラーが赤文字で出ます。デベロッパーツールでの表示はブラウザによって解釈された後のHTMLが表示されているため、「順番が変わる」ことがあります。

タグの閉じ忘れや不完全なタグ名、ダブルコーテーションの閉じ忘れなど、そういったことでHTMLが崩れている可能性はありませんか?

投稿2017/02/10 06:47

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omusoba-san

2017/02/10 07:40

今までFireFoxでしたが、一応ブラウザを念のためSafariに変えたところ、ログが出て原因はわかりました。 原因としてはフォームのnameが一緒に読み込んでいたPHPファイルのフォームと重なってしまったことが原因だったようです。 なので完全に一意なもので出力することで解消されました。 他のブラウザのデバックモード自体は触っていなかったのでいい機会になりました。
guest

0

formのactionはフルパスで書かれているのでしょうか。もし可能であれば、相対パスに変えてみるとか。
あ、ちなみに検証に使用しているブラウザーは何を使われていますか?

投稿2017/02/10 06:34

編集2017/02/10 06:42
turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Aタグにする必要が無ければ

<div onclick="document.changesite.submit()"> </div> でいいのでは

投稿2017/02/10 04:11

date

総合スコア1820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ブラウザ付属の開発ツール(F12)でデバッグするのが確実だと思います

追記

たとえばfunction化して以下のように確認してみるとか

HTML

1<a href="" onclick="return click_func();">test</a> 2<script> 3function click_func(){ 4console.log('test'); 5//document.changesite.submit(); 6return false; 7} 8</script> 9

上記確認できたらsubmitのコメントアウトを外してください

投稿2017/02/10 03:07

編集2017/02/10 03:32
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omusoba-san

2017/02/10 03:26

デバッグをして見てエラーがないか確認しましたが、それらしいエラーが確認できませんでした....。
yambejp

2017/02/10 03:56

とりあえず追記しました。地道にデバッグしてください。 サービス側でなんらかのスクリプトが自動で挿入されていたりとか 考えられなくもないですが、可能性は低いかと ブラウザのセキュリティレベルの違いかもしれませんね? ローカルへの接続に対するセキュリティは低いですが、 インターネットへは高めになっていると思いますので・・・
guest

0

一時的にでもいいのでwebサイトのアドレスをご教示いただけるとスムーズにデバッグが可能かと思いますがいかがでしょうか?

投稿2017/02/10 02:56

MasakazuFukami

総合スコア1869

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omusoba-san

2017/02/10 03:27

すみません、本来であれば公開したいのですが、業務の関係上サイトアドレスを表示させることは難しくなります(守秘義務の関係上、valueの値などの影響のないところは編集しています)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問