2009-06-28 22 views
1

新しいメッセージがあるかどうかを確認するために、ほんの少しの間、自動的に更新される非常に簡単なメッセージボード(作成者、テキスト、日付)を作成しようとしています。到着した場合は最新のメッセージを自動読み込みします。AJAXがPHPコードを呼び出して数分ごとに応答を得る

私はPHPに堪能ですが、AJAXに関する私の知識は欠けています。

私はそれを見る方法、私はデータベースに接続し、$_GET変数リターンを通じて日Xを超えたすべてのポストを得るでしょうget_messages.phpと呼ばれるPHPファイルを作成しなければならない、と私はjqueryのコールこのPHPファイルを介して何とか希望数分おきに$_GET=current time? この音は正しいですか?

データをリクエストして非同期的にWebページに戻す方法はありますか?

http://www.aspcode.net/Timed-Ajax-calls-with-JQuery-and-ASPNET.aspx

何を使用するつもりは非同期間隔でJavaScript関数を呼び出すのsetTimeoutと呼ばれるjavascript関数、次のとおりです。

答えて

1

あなたはかなり近いですが、結果をデータベースに照会できるPHPスクリプトが必要です。次に、あなたはそれらを配列にそれらの結果を変貌したい、とjson_encode()ます:

$results = getMyResults(); 
/* Assume this produce the following Array: 
    Array(
    "id" => "128","authorid" => "12","posttime" => "12:53pm", 
    "comment" => "I completely agree! Stackoverflow FTW!" 
    ); 
*/ 
print json_encode($results); 
/* We'll end up with the following JSON: 
    { 
    {"id":"128"},{"authorid":"12"},{"posttime":"12:53pm"}, 
    {"comment":"I completely agree! Stackoverflow FTW!"} 
    } 
*/ 

をこれらの結果はJSON形式であるならば、あなたはより良いJavaScriptでそれらを処理することができます。 jQueryのajax functionalityを使用して、我々は次の操作を実行できます。

setInterval("update()", 10000); /* Call server every 10 seconds */ 

function update() { 
    $.get("serverScript.php", {}, function (response) { 
    /* 'response' is our JSON */ 
    alert(response.comment); 
    }, "json"); 
} 

今、あなたはjavascriptの(「応答」)内にデータを持っていることは、サーバーからの情報を自由に使用できます。

+0

どのようにして( '応答')のデータを使用できますか? –

+0

ロバート私はもう少しのデータで答えを更新しました。 – Sampson

0

ASP.NETのものを無視するには、このリンクは良いスタートです。そこから、jQueryにはAJAX呼び出しの結果をDIVなど、探している要素にロードする "load"という素晴らしい機能があります。また、jQueryにDOMをあなたが望むように変更させる他の方法も数多くあります。

これを行うには100の方法がありますが、可能であればクロスブラウザ機能の頭痛を救うためにプレーンなJavascriptを書くのは避けてください。

0

Googleコードで利用できるSimple AJAXコードキット(SACK)をお勧めします。

私はGoogleコードの前から使用していました。非常に軽くて簡単です。それはあなたが含める必要がある1つのjsファイルです。私はそれがオンラインブラウザゲームでも使われているのを見ました。

divの中 get_messages.phpからロードページの内容について

http://code.google.com/p/tw-sack/

例(あなたがget_messages.phpからページ内容を気に、と単純にPHPファイルを呼び出したい、簡単なajax.element行を削除しない場合):

<script type="text/javascript" src="tw-sack.js"></script> 
<script> 
var ajax = new sack(); 
ajax.method = "GET"; // Can also be set to POST 
ajax.element = 'my_messages'; // Remove to make a simple "ping" type of request 
ajax.requestFile = "get_messages.php"; 
ajax.setVar("user_name","bobby"); 
ajax.setVar("other_variables","hello world"); 
ajax.setVar("time",dateObject.getTime()); 
ajax.onCompleted = whenCompleted; 
ajax.runAJAX(); 

function whenCompleted(){ 
    alert('completed'); 
} 
</script> 

<div id="my_messages">Loading...</div> 

単純な「ping」タイプのリクエストを行い、PHPファイルの出力を無視する場合は、「ajax.element」を指定する必要はありません。要件を実装するために必要なのは、ajax呼び出しを行う「setTimeout」を使用することだけです。

のような多くの他のオプションもあります。

//ajax.onLoading = whenLoading; 
//ajax.onLoaded = whenLoaded; 
//ajax.onInteractive = whenInteractive; 

巨大なフレームワークを学ぶか、含めるする必要はありませんが。そして、あなたはtw-saackですぐに始めるでしょう。

関連する問題