javascript と ライブラリーのjqueryを学習中ですが、jqueryとphpとmysqlで非同期の掲示板のようなものを作りたいと考えています。(名前とメッセージを入れるという単純なものです)。今、できていないのが、フォームに入力したものを非同期で送信してデータベースに登録して、その後に、登録したデータを出力したいのですが、うまくいきません。既に仮としてデータベースにあらかじめ入れてあるデータの表示一覧は可能なのですが、新規でフォームより投稿して、データベースに登録して、フロントに表示するという処理でつまづいています。こうしたほうがよいというようなアドバイスをお手数をかけますが、よろしくお願いします。
ファイル構成は、 index.html と message.php になります。データベースのテーブルは、idと name, messageの構成になります。
index.htmlの<script>タグの処理は、画面が読み込まれたときに、一覧を表示する処理と、ボタンのクリックがあったときに、postデータを送信して、成功したら一覧として戻すという処理です。
【index.html】
<!DOCTYPE html><html lang="ja">
<head><meta charset="utf-8" /><title>テスト</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10 …
<script>
$(function(){
$.ajax({
type: "POST",
url: "message.php",
dataType: "json",
success: function(data, dataType){
var $content = $('#info');
for (var i =0; i<data.length; i++){
$content.append("<li>" + data[i].id + " "+ data[i].name + " " + data[i].message +"</li>");
}
}
});
});
$('#sending').click(function(){
$.ajax({
type: "POST",
url: "message.php",
dataType: "json",
data: {
s_name: $('#s_nmae').val(),
s_message: $('#s_message').val()
},
success: function(data, dataType){
var $content = $('#info');
for (var i =0; i<data.length; i++){
$content.append("<li>" + data[i].id + " "+ data[i].name + " " + data[i].message +"</li>");
}
}
});
return false;
});
</script>
</head>
<body>
<h1>フォーム</h1>
<form method="post">
<input id="s_name" type="text" name="name" size="30" maxlength="20"><br>
<textarea id="s_message" ></textarea><br>
<input id="sending" value="送信" type="submit" /><br>
</form>
<h1>表示</h1>
<ul id="info"></ul>
</body>
</html>
【message.php】
<?php
$dsn = 'mysql:dbname=test;host=localhost;charset=utf8';
$user = 'root';
$password = 'xxxxxxxx';
$pdo = new PDO($dsn, $user, $password);
header("Content-type: text/plain; charset=UTF-8");
if (isset($_POST['s_name'])){
try{
$sql = "INSERT INTO message(name, message) VALUES(?,?)";
$datas=array($_POST['s_name'],$_POST['s_message']);
$stmt = $pdo->prepare( $sql);
$stmt->execute($datas);
}catch (PDOException $e){
die('Error:' . $e->getMessage());
}
}
try{
$sql = "select * from message";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetchObject()){
$all[] = array(
'id'=> $row->message_id
,'name' => $row->name
,'message' => $row->message
);
}
header('Content-Type: application/json');
echo json_encode( $all );
exit;
}
catch (PDOException $e){
die('Error:' . $e->getMessage());
}
?>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは
とりあえず気が付いたところを・・・
javascriptの部分の構成が以下のようになっていると思いますが、
$(function(){
$.ajax({
~~~
});
});
$('#sending').click(function(){
$.ajax({
~~~
});
return false;
});
後半の$('#sending').click(function(){ ~の実行時点では、まだHTML全体のパースは行われていないので、$('#sending')がnullになっていると思われます。
jQueryオブジェクトではこのような場合もエラーを出さず、以降の処理を無視するようになっていたと思いますので、送信ボタンを押したときのイベントのバインドできていないものと推測します。
処理が動作しているかどうか、alertなどで確認なさってみてください。
(想像するところ通常のsubmitになると思いますので、同じページに遷移していませんか?)
全体を、$(function(){ ~ の関数内に納めれば、バインド処理もready後に実行されるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力フォームの値をQRコードで...
-
PDFを(htmlのように)無限に縦...
-
バッチファイル 特定ウインドウ...
-
GASでスプレッドシートの一番上...
-
要素内を常に一番下を表示させたい
-
1枚の画像をクリックすると複数...
-
bxsliderで最初に縦に複数表示...
-
正規表現で、特定の文字列を含...
-
ワードでA3横の画面にして、文...
-
Base64に変換したHTMLの<script...
-
Ajax サーバーに負荷かかります...
-
php の画面ボダンを押すと、サ...
-
bxsliderで複数のvimeoスライド...
-
bxSliderで動画をスライドごと...
-
C言語のflagの使い方が分かりま...
-
データ受け渡しについて
-
webページの特定の部分だけ消し...
-
同一ページ移動時ハンバーガー...
-
ナイトボットのAliasについて
-
これってなんの電話かわかりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ajaxからphpにpsotしたときの日...
-
JavascriptからPHPへのAjax通信...
-
jQueryのblockUIをformのボタン...
-
JSONをperlで受け取る方法
-
jQueryを使いformでsubmitした...
-
jQuery を外部ファイルから呼び...
-
Ajax サーバーに負荷かかります...
-
jquery,ajaxによるphp通信でnull
-
jquery × php × mysql 非同期で...
-
jQueryで外部テキストファイル...
-
jQuery,Ajaxでcgiに接続する方...
-
jQuery3 reset()が効かない。
-
eval、$.eachで順番が入れ替わ...
-
Ajax・jQueryでGET時にIE...
-
ページを遷移せずにデータ送信
-
Ajax・jQueryでGETとPOSTする方法
-
ime入力中にcssを変更する方法
-
Ajaxでフォームデータを連続登...
-
AjaxでJSONを受信すると、文字...
-
JQueryの変数の扱いで弱ってい...
おすすめ情報