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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

1597閲覧

jqueryのajaxを使用しているが処理がphp側へいかない

aushijima

総合スコア55

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

1グッド

0クリップ

投稿2018/11/22 04:58

#実現したいこと
送信ボタンを押した際にテキストエリアに入力されたデータをajaxでphp側へ送りたいが送ることができないので送れるようにしたいです。

#現状
エラーなどは、出ないのですが、php側に埋め込んだログメッセージなどがログに書き込まれていないので、処理がphp側に来ていない状態です。

#実際のソースコード

●html・js側

<div class="chatRoomFooter"> <form method="post" name="chat_direct" enctype="multipart/form-data"> <div class="input textareaParts expand"> <div class="minTextareaParts selfclear"> <div class="textareaWrapper"> <textarea class="commonContent" name="GROUP_CHAT_EXCHANGE_COMMENT_TEXT" id="GROUP_CHAT_EXCHANGE_COMMENT_TEXT" placeholder="コメントを入力"></textarea> </div> <div class="functionButton"> <button id="direct_chat_create" name="direct_chat_create" class="submit direct_chat_create">送信</button> </div> </div> </div> </form> </div> // ################################################## // ダイレクトチャット部分やり取り関係機能 // ################################################## $(function() { //登録した際の投稿部分のカウント数 var registerNum = 0; //登録処理をする際のajaxの記載 $(document).on('click','button[name="direct_chat_create"]',function(){ //送信する時の登録用のオブジェクトを作成する var senddata = new Object(); //登録するコメント本文を作成 $('textarea.commonContent').each(function(){ senddata[$(this).attr('id')] = $(this).val(); }) //登録するボタンの情報を作成 $('button[name="direct_chat_create"]'.each(function(){ senddata[$(this).attr('id')] = $(this).val(); })) if (window.XMLHttpRequest) { ajax = new XMLHttpRequest(); } else if (window.ActiveXObject) { //IEで使用する時などに使用する ajax = new ActiveXObject("MSXML2.XMLHTTP.3.0"); } // Ajaxでのカテゴリの登録・削除 $.ajax({ type: "POST", url: "library/Api/chatDirect.php", data: senddata, done: function (senddata) { $('.chatRoomCommentBlock').after("<div id=\"new_direct_chat_comment_"+registerNum+"\"></div>"); $('#new_direct_chat_comment_'+registerNum).html(senddata); registerNum++; }, fail: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }) }); //登録した投稿に関して返信をする際に必要 $(document).on('click','a[id="reply_comment"]',function(){ //返信した際のhtml要素を取得する var className = $(this).attr('class'); var directExchangeList = className.split('_'); //ダイレクトチャットの時の返信コメント番号 var direct_chat_exchange_reply_comment_no = directExchangeList[2]; //ダイレクトチャット時の表示番号 var direct_chat_exchange_display_no = directExchangeList[3]; //作成するhtmlタグを作成(返信したコメントとお気にいりやいいねや返信ボタンを表示させる) $('#reply_to').html( direct_chat_exchange_display_no+'へ返信する' +'<a href="javascript:void(0);" id="reply_cancel">×</a>' +'<input type="hidden" class="direct_chat_create" id="direct_chat_exchange_reply_comment_no" value="'+direct_chat_exchange_reply_comment_no+'">' ); }); })

●php側

<?php // library直下のlibrary.phpを読み込むように設定する require_once(preg_replace('/Api[\/\]chatDirect.php/','',__FILE__).'library.php'); $chat = new Chat; ########################################## // ダイレクトチャットで必要になる機能 // 送信ボタンを押した時に投稿内容が登録される // 空で送信ボタンを押すと登録の処理が行われない // 自分で作成した投稿に関しては、削除することが可能 // 投稿内容に関していいね、お気に入り登録、返信などをすることができる。(自分の投稿や相手の投稿に関わらず、つけれる) ########################################## logger('処理は、来ているよ'); //コメントが入力されいる時は、送信ボタンを押すと登録処理が走る if(!empty($_POST['direct_chat_create'])){ dbg('ボタン押されたよ'); //コメントが入力されていれば登録処理を行う if(!empty($_POST['GROUP_CHAT_EXCHANGE_COMMENT_TEXT'])){ dbg('データがちゃんと来てるよ'); $chat->setDirectChatExchange($_POST['group_chat_no'],$_POST['GROUP_CHAT_EXCHANGE_COMMENT_TEXT'],$reply_to_dairect_chat_comment_no); }else{ // コメントが入力されていない時は、何も行わない } }else{ logger('押されていないよ'); }

良かったら教えてください。

lockout👍を押しています

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

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

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

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

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

guest

回答2

0

Javascript

1 //登録するボタンの情報を作成 2 $('button[name="direct_chat_create"]'.each(function(){ 3 senddata[$(this).attr('id')] = $(this).val(); 4 }))

ここ

javascript

1 //登録するボタンの情報を作成 2 $('button[name="direct_chat_create"]').each(function(){ 3 senddata[$(this).attr('id')] = $(this).val(); 4 })

こうでは?( .eachの前に括弧)

投稿2018/11/22 05:23

rururu3

総合スコア5545

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

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

aushijima

2018/11/22 05:56

記述ミスをしていましたね。ありがとうございます。
guest

0

ベストアンサー

なんかtypoが多いし、無駄なものもあるので以下でチェックしてみてください

  • html

HTML

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function() { 4 var registerNum = 0; 5 $(document).on('click','button[name="direct_chat_create"]',function(e){ 6 e.preventDefault(); 7 var senddata = new Object(); 8 $('textarea.commonContent').each(function(){ 9 senddata[$(this).attr('id')] = $(this).val(); 10 }); 11 $('button[name="direct_chat_create"]').each(function(){ 12 senddata[$(this).attr('id')] = $(this).val(); 13 }); 14 $.ajax({ 15 type: "POST", 16 url: "send.php", 17 data: senddata, 18 }).done(function (senddata) { 19 $('.chatRoomCommentBlock').after("<div id=\"new_direct_chat_comment_"+registerNum+"\"></div>"); 20 $('#new_direct_chat_comment_'+registerNum).html(senddata); 21 registerNum++; 22 }).fail(function (XMLHttpRequest, textStatus, errorThrown){ 23 alert(errorThrown); 24 }); 25 }); 26 27 $(document).on('click','a[id="reply_comment"]',function(){ 28 var className = $(this).attr('class'); 29 var directExchangeList = className.split('_'); 30 var direct_chat_exchange_reply_comment_no = directExchangeList[2]; 31 var direct_chat_exchange_display_no = directExchangeList[3]; 32 $('#reply_to').html( 33 direct_chat_exchange_display_no+'へ返信する' 34 +'<a href="javascript:void(0);" id="reply_cancel">×</a>' 35 +'<input type="hidden" class="direct_chat_create" id="direct_chat_exchange_reply_comment_no" value="'+direct_chat_exchange_reply_comment_no+'">' 36 ); 37 }); 38}); 39</script> 40 41<div class="chatRoomFooter"> 42<form method="post" name="chat_direct" enctype="multipart/form-data"> 43<div class="input textareaParts expand"> 44<div class="minTextareaParts selfclear"> 45<div class="textareaWrapper"> 46<textarea class="commonContent" name="GROUP_CHAT_EXCHANGE_COMMENT_TEXT" id="GROUP_CHAT_EXCHANGE_COMMENT_TEXT" placeholder="コメントを入力"></textarea> 47</div> 48<div class="functionButton"> 49<button id="direct_chat_create" name="direct_chat_create" class="submit direct_chat_create">送信</button> 50</div> 51</div> 52</div> 53</form> 54</div> 55<div class="chatRoomCommentBlock"></div>
  • send.php

PHP

1<?php 2$direct_chat_create=filter_input(INPUT_POST,"direct_chat_create"); 3$GROUP_CHAT_EXCHANGE_COMMENT_TEXT=filter_input(INPUT_POST,"GROUP_CHAT_EXCHANGE_COMMENT_TEXT"); 4 5if(!is_null($direct_chat_create)){ 6 print 'button pushed<br>'; 7 if(!is_null($GROUP_CHAT_EXCHANGE_COMMENT_TEXT) and $GROUP_CHAT_EXCHANGE_COMMENT_TEXT!==""){ 8 print 'get data<br>'; 9 }else{ 10 print 'no data<br>'; 11 } 12}else{ 13 print 'button not pushed<br>'; 14}

投稿2018/11/22 05:16

yambejp

総合スコア114829

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

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

aushijima

2018/11/22 06:00

試してみました。 送信を押すとNot Foundというアラートが出ました。 それと、 function(e)を設定する時は、どのような時なのですか? また、phpとajaxを使用する時は、emptyよりもfilter_inputやis_nullを使用するのが一般的ですか?
yambejp

2018/11/22 06:04 編集

> Not Found ajaxのurlと送り先のphpをあわせて下さい > function(e)を設定する時 buttonタグはsubmitの機能をもっているので、サブミットさせないためには type="button"を指定するか、eをつかってイベントを殺します > emptyよりもfilter_input 受け取ったデータを処理するにはfilter_inputがおすすめです 必要に応じていろいろな条件でバリデートできます
aushijima

2018/11/22 06:32

ありがとうございます。ちなみに、php側でデータベースに登録したい時に urlの中の chat_direct?group_chat_no=1 group_chat_noの情報などもajaxで送る時も、php側で $direct_chat_create=filter_input(INPUT_POST,"group_chat_no"); のようにしてあげれば良いですか?
yambejp

2018/11/22 06:38

> ?group_chat_no=1 $group_chat_no=filter_input(INPUT_GET,"group_chat_no"); でしょうね。ただしgetとpostを一緒に送るのは混乱の元ですけどね それがapiの仕様ならしかたないでしょう
aushijima

2018/11/26 06:34

ありがとうございました。無事に表示できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問