私は、受信した/送信されたすべての電子メールを一覧表示するために、jqueryアコーディオンを使用しています。 ヘッダー(h3 + a)はオブジェクトを示し、内容(div)はメールテキストです。JqueryアコーディオンヘッダーへのSQLリクエストの追加
HTMLアコーディオン:
<div id="accordion">
<div>
<h3><a href="#">object 1</a></h3>
<div>mail 1 text</div>
</div>
<div>
<h3><a href="#">object 2</a></h3>
<div>mail 2 text</div>
</div>
<div>
<h3><a href="#">object 3</a></h3>
<div>mail 3 text</div>
</div>
</div>
アコーディオンスクリプト機能:
$(function() {
$("#accordion").accordion({
autoHeight: false,
header: "h3",
navigation: true
});
});
問題:
私はメールのヘッダにCLIC場合にのみ、私のSQLデータベースを要求したいと思い、すべてのメールを事前にロードしないようにします。 私の場合には他にも重要なことは、メールを「読み取り」または「未読」とマークすることです。これはSQLデータベースに列があります。だから、彼のアコーデオンのヘッダーがぎこちなくなったら、メールを "読む"状態に変える必要があります。
アコーディオンを使用する前に、私はすべてのページをリロードするシンプルリンクを使用していました。私は、PHP/SQLに問題が何をしたん、しかし、私には、JavaScript/jQueryのではあまり良くないんだけど、またはAJAX ...
SQL要求(簡体字):
$sql = "SELECT mail_object, mail_text FROM table_mail ";
$req = mysql_query($sql);
SQL更新読み取り状態(簡略化):
$sql_2 = "UPDATE table_mail SET mail_read=1 ";
$req_2 = mysql_query($sql_2);
したがって、ヘッダーをクリックするとこのコードを実行する方法はありますか?
その後、ヘッダースタイルを変更して、読み取り/未読メールを区別する方法(太字や背景イメージ/色を変更する方法)をお尋ねします。
ありがとうございます。
<div id="accordion">
<div>
<h3><a onclick=$.post('update_to_read.php') href="#">object 1</a></h3>
<div>mail 1 text</div>
</div>
私は今追加してみましょう:この
$("a").one('click', function(){
$.post("url_where_php_query_db_and_update_at_the_same_time",
$(this).text(),
function(xhr){
var mailText = xhr.responseText;
$(this).next("div").text(mailText); //update the mail content
//now set your mail to another class
$(this).addClass("read");
//you need to have css to set "read" class to different style
//e.g. a.read { font-weight: normal;}
});
セレクタを '#accordion a'に変更したい場合は、そのページに他のリンクがある可能性が高い場合は、 –
こんにちは。しかし、それは動作しません。私もシンプルなリンクと基本的なリクエストでテストしましたが、何も起こっていません...あなたが ";"最後に、右?多分私は見られない他のエラーがありますか? – croc123
はい、 ";"最後に。このコードは、テスト済みの読み込み用ではなく、アイデアを伝えるための単なる方法です。あなたはちょうどアイデアを求めていたのですか? :) – ComfortablyNumb