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

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

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

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

JavaScript

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

HTML

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

Q&A

解決済

1回答

5372閲覧

phpのヒアドキュメント内でのJavaScript関数の実行について

kakkydayo

総合スコア16

PHP

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

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2016/04/09 06:32

現在、最終的にはhtmlでonClickしたらphp関数のlog_bbs()を実行するという処理を行いたいと考えております。

そのため、onClickしたらajaxで非同期処理をおこないlog_form()を実行したいのですが、
そもそもonClickしたらjsの関数を実行してくれません。

phpのヒアドキュメント内に書いているのですが何が間違っているのでしょうか。
お力をお貸しください。

下記にコードを記載致します。

php

1 2echo <<<EOM 3 <script language="javascript" type="text/javascript"> 4 function logout() { 5 alert('OK');//実行されず 6 $.ajax({ 7 type: "POST", 8 url: "bbs.php", //PHPを呼び出す 9 success: log_bbs(){//成功処理 10 $("#bbs_form").html('正常に処理されました'); 11 }, 12 error:log_bbs(){//失敗処理 13 $("#bbs_form").html('処理に失敗しました'); 14 } 15 }); 16 } 17 </script> 18 <form action="{$script}" method="POST" id="bbs_form"> 19 <input type="button" value="ログアウト" onClick="logout()"> 20 省略・・・ 21 22EOM; 23 24 25 function log_form(){ 26 省略・・・ 27 } 28 29

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

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

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

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

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

shi_ue

2016/04/09 06:42

ヒアドキュメント内のscriptタグは、なぜヒアドキュメント内になければならないんですか? 普通に書けばいいのに・・・
kakkydayo

2016/04/09 13:56

htmlを見やすくするためにまとめて書いておりまいた。忠告ありがとうございます。美しくないですもんね。 またCertaiNさんありがとうございます。echoを省略できること初めて知りました。
guest

回答1

0

ベストアンサー

JavaScriptの構文が間違っています。success: log_bbs(){ ... }という記述は不正であり、success: function(){ ... }が適切でしょう。

よって、正しくはこうではないでしょうか?

JavaScript

1function logout() { 2 alert('OK');//実行されず 3 $.ajax({ 4 type: "POST", 5 url: "bbs.php", //PHPを呼び出す 6 success: function(){//成功処理 7 $("#bbs_form").html('正常に処理されました'); 8 }, 9 error:function(){//失敗処理 10 $("#bbs_form").html('処理に失敗しました'); 11 } 12 }); 13}

これを修正してもalert文が動作しない場合、HTMLの属性も誤っているのかもしれません。
onClickではなくonclickと記述してください。


※以降の文章は余談となります

jQuery.ajaxのその使い方は既に古くなっています。現在は、done()fail()を使用した書き方の方が分かりやすいです。

jQuery モダンAjaxな書き方を目指して 〜Deferredを使ったAJAX〜 - Hack Your Design! #jQuery 1.8以上の書き方

また、Ajax送信により特定のPHPの関数を実行したいという説明から不安を感じます。
何故なら、Ajax送信は通常のページ読み込みと同様に、対応するPHPファイルのPHPスクリプト全体が実行されるものであるため、特定の関数だけを実行する場合はURLルーティングなどの記述をおこなう必要があるためです。

全体の実装を見ていないため、的はずれな指摘ならば申し訳ないのですが、
提示したPHPコードがbbs.phpの一部であり、かつ、質問のecho文が条件分岐などで分岐されずに直接記述されている場合、正しくログアウト処理が動作しない可能性があります。

投稿2016/04/09 07:08

sounisi5011

総合スコア697

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

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

kakkydayo

2016/04/09 13:52

特定の関数だけを実行したいのですが、URLルーティングの記述とはどういった書き方をすればいいのでしょうか?
sounisi5011

2016/04/09 18:02

書き方には複数ありますし、また要件によっても異なります。 ここでいう「URLルーティング」とは、URLの記述によって処理内容を分岐させる手法を意味しています。なので、URLの構造などが決まっていないとなんとも… いずれにせよ、余談の範囲であるため質問の本筋から外れること、コード全体が分からないため的はずれである可能性があること、回答内容の記述が多くなる事などが予想されるため、ここのコメントでは示せません。別の質問として投稿されれば(そしてそれを私が見つけられれば)、回答できるかもしれません…
mpyw

2016/04/09 22:17

「Slim3などのマイクロフレームワークを使ってルーティングしましょう」 http://www.slimframework.com/ といえばそれまでなんですが,明らかに回答の範疇を超えているので…(笑
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問