アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://oshiete.goo.ne.jp/qa/7574571.html
でもご質問させていただきましたが、ajaxを使用してphpファイルに記述のあるmysql insert文でデータベースの登録はできました。

bbs.php
<table class="commentlist">
<!-- bbs.inc.phpファイルという別ファイルでfor文で一覧を出している。 -->
</table>

<!-- ここからがコメントの入力 -->
<form method="post">
<input type="text" name="comment" id="comment" value="" />
<input type="button" name="save" id="save" value="投稿" />
</form>

$("#save").click(function(){
var p = $("#comment").val();
$("#comment").val("");
$.post( "bbs.php", { request:p, success: (ここがわからない。)});
});

としたときにフォームでpostしたときにページ全体にリロードではなくclass="commentlist"の一覧のみリロードしたいのですが、どうもできません。
どなたかご教示お願いします。
(bbs.inc.phpはソース内には残したくないです。)

A 回答 (2件)

まずはphp側で一覧を取得してresultに値が入るかを目指しましょう。

この回答への補足

phpで一覧の取得をしております。

bbs.inc.php
-- LEFT JOINを使用してのmysql接続 --
//$row['name']はjoinで別テーブルからの呼び出し
while ($row = mysql_fetch_assoc($commentres)) {
$commentlist .= '<p>' .$row['name']. ':' .$row['comment'].$row{'date']. '</p>'."\n";
}

bbs.php
<div id="commentlist">
<?php echo $commentlist; ?>
</div>

<form method="post">
<input type="hidden" name="bbs_id" id="bbs_id" value="<?php echo $bbs_id; ?>" />
<input type="hidden" name="name_id" id="name_id" value="<?php echo $name_id; ?>" />
<input type="text" name="comment" id="comment" value="" />
<input type="button" name="save" id="save" value="投稿" />
</form>

$(function(){
$("#save").click(function(){
var a = $("#bbs_id").val();
var b = $("#name_id").val();
var p = $("#comment").val();

$.ajax({
type: "POST",
scriptCharset: 'utf-8',
dataType:'json',
url: "bbs.php",
data: { bbs_id:a, name_id:b, comment:p },
success: function(result){
alert('通る');
},
error:function(){
alert('通らない');
}
});
});
});
といたしております。
必ずerrorを通ってしまいます。

どうかご教示お願いします。

補足日時:2012/07/10 23:45
    • good
    • 0

Ajaxの処理の流れは以下のようになります。



1) 登録
2) 一覧取得
3) htmlに書き出し

bbs.php内でデータ登録、一覧取得してsuccess部分で表示させます。

success: function(rerult){

}

※rerultはbbs.php内でprint_rした配列

success: function(rerult){
// この中にhtmlに書き出す処理をすればOKです。
}

success: function(rerult){
var html = '';
for (var i = 0; i < rerult.length; i++) {
// 配列を回してテーブルの中を作る
html = html + '<tr><td>rerult.val</td></tr>';
}
  $(".commentlist").val(html);
}
    • good
    • 0
この回答へのお礼

お忙しい中有難う御座います。
上記の内容を少々カスタマイズして、
こちらの環境用にしたのですが、リロードがされませんでした。

結果はsuccessがundefind(fire bugで確認)になってしまいます。
変更したところはi<result.length;をi<30にして
html = html + '<tr><td>rerult.val</td></tr>';

html = html + '<tr><td><?php echo $name; ?></td><td><?php echo $comment; ></td></tr>';
としています。

お礼日時:2012/07/10 00:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!