Javascriptをはじめ、Ajax、jQueryの著書多数のガイドが、何かと最近騒がれているJa…
Javascript関連情報
更新日:2005年08月31日
掲示板も、Ajaxを利用することで、ページ丸ごと更新の無い軽快な動作が可能になります。今回は、サーバー側ソースには触らずに、 JavaScript側からのSQLデータベース制御ロジックのみで動作するBBSです。

| win | mac | linux | |||||||||
| n7 | m1 | e6 | o7 | o8 | n7 | m1 | e5 | s1 | n7 | m1 | k3 |
| ○ | ○ | ○ | × | ○ | ○ | ○ | × | ○ | ○ | ○ | ○ |
<font color=orange>
<!-- 暫定Ajaxライブラリ jslb_ajaxxxx.js -->
<script language = "JavaScript"
charset = "utf-8"
src = "./ajasql/jslb_ajax036.js"></script>
<!-- 暫定AjaSQLライブラリ ajasqlxxx.js -->
<script language = "JavaScript"
charset = "utf-8"
src = "./ajasql/jslb_ajasql027.js"></script>
<!-- AjaSQL BBS用 HTML構築ライブラリ ajasql_formsxxx.js -->
<script language = "JavaScript"
charset = "utf-8"
src = "./ajasql/ajasql_bbs001.js"></script>
<script language = "JavaScript">
<!--
//起動時処理
window.onload=doIni
//
//SQL送信=======================================
//
//発言済みデータをリクエスト
function showMsg(oj)
{
//SQL文作成
// (テーブルから カラム「id」降順でmax.value件リクエスト)
var sql = 'SELECT * FROM ' + sqlite01.tblName
+ ' ORDER BY id DESC '
+ ' LIMIT '+oj.form.max.value+';';
//SELECT文を送信
asql_sendSQL(sqlite,sql)
}
//検索文字列を含むデータをカラム「name」「msg」から検索
var seachText = ''
function seachMsg(oj)
{
//検索文字列をセット
var seachText = oj.form.sel.value
//SQL文作成
// (カラム「name」「msg」にsel.valueを含むデータを
// 「id」降順でmax.value件リクエスト)
var sql = 'SELECT * FROM ' + sqlite01.tblName
+ ' WHERE name LIKE "%'+oj.form.sel.value+'%" '
+ ' OR msg LIKE "%'+oj.form.sel.value+'%" '
+ ' ORDER BY id DESC '
+ ' LIMIT '+oj.form.max.value+';';
//SELECT文を送信
asql_sendSQL(sqlite,sql)
}
//検索文字列を含む発言データをカラム「msg」から検索
function seachMsgByText(oj,text)
{
//検索文字列をセット
seachText = text
//SQL文作成
// (テーブルから カラム「msg」が「%text%」
// なものを降順でmax.value件リクエスト)
var sql = 'SELECT * FROM ' + sqlite01.tblName
+ ' WHERE msg LIKE "%'+ text +'%" '
+ ' ORDER BY id DESC '
+ ' LIMIT '+oj.form.max.value+';';
//SELECT文を送信
asql_sendSQL(sqlite,sql)
}
//前後のデータをリクエスト
function showMsgByOFFSET(oj,offset)
{
//SQL文作成
// (テーブルから カラム「id」降順でoffset件目から
// max.value件リクエスト)
var sql = 'SELECT * FROM ' + sqlite01.tblName
+ ' ORDER BY id DESC '
+ ' LIMIT '+oj.form.max.value+' OFFSET '+offset+' ;';
//SELECT文を送信
asql_sendSQL(sqlite,sql)
}
//発言
function insertMsg(oj)
{
if(oj.form.msg.value=='メッセージ欄' ||
oj.form.msg.value==''||
oj.form.name.value=='' )return
//とりあえず改行と,を暫定禁止、クオートを全角に。
//IEが?r?nで処置できなくなってたので%0D%0Aで処置
//ただし、他のブラウザ用に?r?n処理も生かす
msg = oj.form.msg.value.split('?n').join('')
msg = msg.split('?r').join('')
msg = encodeURI(msg)
msg = msg.split(getRN()).join('')
msg = decodeURI(msg)
//全角へエスケープ
msg = msg.split(',').join(',')
msg = msg.split("'").join('’')
msg = msg.split('"').join('”')
msg = msg.split(';').join(';')
msg = msg.split('&').join('&')
//SQL文作成
var sql = 'INSERT INTO '+sqlite01.tblName
+ ' VALUES( '
+ ' Null ,' //id
+ ' "'+oj.form.name.value+'",' //名前
+ ' "'+msg+'" ,' //メッセージ
+ ' "" ,' //
+ ' "#SERVER_NOW#",' //時間
+ ' ""' //
+ ' );';
//発言後用のコールバック時起動関数をonInsertedに指定
sqlite.ini.callback = onInserted
//INSERT文を送信
asql_sendSQL(sqlite,sql)
//発言クリア
oj.form.msg.value = ''
}
//
// コールバック関数
//
var ary =''
//コールバック関数1
function onSelected(resoj,reqoj)
{
//レスポンスデータを配列化 ( array[行][列] で取り出せるようにします)
ary = getRowColArray(resoj,reqoj)
if(ary.length>1){
//発言表示用DIV へ出力
msges.innerHTML=outputMsges(ary,headBgcolor,rowsBgcolors)
} else ajasql_bbs_last = true
//検索ワードに背景色をつける
if(seachText != ''){
var wkmsges = msges.innerHTML.split(seachText)
var color = "<span style='background-color:#aacccc'>"
+ seachText+"</span>"
msges.innerHTML = wkmsges.join(color);
}
}
//コールバック関数2
function onInserted(resoj,reqoj)
{
//レスポンスデータを配列化 ( array[行][列] で取り出せるようにします)
ary = getRowColArray(resoj,reqoj)
//発言表示用DIV へ出力
msges.innerHTML="---"+outputMsges(ary,headBgcolor,rowsBgcolors)
//表示
sqlite.ini.callback = onInserted2
showMsg(bbsform);
}
//コールバック関数3
function onInserted2(resoj,reqoj)
{
//レスポンスデータを配列化 ( array[行][列] で取り出せるようにします)
ary = getRowColArray(resoj,reqoj)
//発言表示用DIV へ出力
msges.innerHTML=outputMsges(ary,headBgcolor,rowsBgcolors)
}
//-->
</script>
<style>
/* 入力フォームのCSS*/
/* 略 */
/* 発言表示用DIVのCSS*/
/* 略 */
</style>
人気Javascriptランキング
Powered by 価格.com