echo
asを使用innerHTML
することは、人々にあらゆる種類の楽しいものをコードに注入してもらうことを懇願します。
ゲームのこの時点では、おそらくJSONを使用してメッセージを送受信し、ブラウザーに表示したいものを作成するJSを作成する必要があります。
メッセージングシステムを作成している場合は、次のようになります。
ブラウザ 内(スタイルなし)
• Norguard
My message
2012-10-02 10pm
• Norguard
Message 2
2012-10-02 11pm
HTML
<!-- basic idea of what I'm working with in the end result -->
<ul id="message-list">
<li><span class="username">Norguard</span><p class="content">My Message</p><time datetime="2012-10-02T22:00:00.000Z" pubdate>2012-10-02 10pm</time>
</ul>
JS (プログラム)
// This might be a really basic implementation of functions to display messages
var Messager = {
parent : document.getElementById("message-list"),
update : function () { /* get messages from server */ },
buildMessage : function (message) {
var frag = document.createDocumentFragment,
name = document.createElement("span"),
body = document.createElement("p"),
time = document.createElement("time");
name.className = "username";
body.className = "content";
time.setAttribute("pubdate", "pubdate");
name.innerText = message.userName;
body.innerText = message.content;
time.setAttribute("datetime", message.timestamp);
time.innerText = message.friendlyDate;
frag.appendChild(name);
frag.appendChild(body);
frag.appendChild(time);
return frag;
},
buildMessages = function (messages) {
var parentFrag = document.createDocumentFragment(),
messenger = this;
messages.forEach(function (message) {
var li = document.createElement("li"),
messageFrag = messenger.buildMessage(message);
li.appendChild(messageFrag);
parentFrag.appendChild(li);
});
return parentFrag;
},
writeMessages = function (newMessages) {
this.domElement.appendChild(newMessages);
// or do whatever sorting is required, et cetera
}
};
JS (結果処理)
// this might be like what your XHR callback looks like (this is really basic)
xhr.onreadystatechange = function () {
if (!this.readyState === 4 && (!this.status == 200 || !this.status == 302)) { return; }
var json = "",
data = "",
messages;
json = this.responseText;
data = JSON.parse(json);
messages = Messager.buildMessages(data);
Messager.writeMessages(messages);
};
JSON (応答テキスト)
// What your JSON response would be
[
{
"username" : "Norguard",
"content" : "My message",
"timestamp" : "2012-10-02T22:00:00.000Z",
"friendlyDate" : "2012-10-02 10pm"
}, {
"username" : "Norguard",
"content" : "Message 2",
"timestamp" : "2012-10-02T23:00:00.000Z",
"friendlyDate" : "2012-10-02 11pm"
}
]
JSONにわかりやすい日付を入れるようなことはしないでください。代わりに、JSと各メッセージのタイムスタンプを使用して、ユーザーの現地時間に変換する必要があります。できるだけ少ないフリルでパッケージ全体を通過します。
PHPからは、メッセージが保存されている方法(データベース、csv、さまざまなテキストファイル... ... Twitterからストリーミング......何でも)でメッセージを取得し、それらをすべて配列に配置します。 。
PHP
// Your PHP for the data above might look like this:
$msgArray = array(
array( "username" => "Norguard",
"content" => "My message",
"timestamp" => "2012-10-02T22:00:00.000Z",
"friendlyDate" => "2012-10-02 10pm" ),
array( "username" => "Norguard",
"content" => "Message 2",
"timestamp" => "2012-10-02T22:00:00.000Z",
"friendlyDate" => "2012-10-02 11pm" )
);
$jsonData = json_encode($msgArray);
echo $jsonData;
これにはエラーがある可能性があります-私はこれをコードパッドで書いたのではなく、頭のてっぺんからここで書いただけです。
また、100%完全なコードを意味するものでもありません。たとえば、XMLHttpRequestの設定、イベント処理の実行、UI処理(タイムスタンプによるメッセージの並べ替え、重複の削除、更新ボタンの追加など)については説明しませんでした。
これは、PHPからJS(Chrome / FF / Safari /新しいIE)にJSONデータを取得するための最低限の必要条件であり、そのデータをHTMLに入れてページに入れるための非常に簡単な戦略です。