Perlのカテゴリで質問したところ(質問番号:5634620)、JavaScriptで実現
できるかもしれないとのアドバイスを頂いたので、こちらで質問します。
次のことをするcgiを作りたいのですが
1. cgiを起動したらある装置からデータを読み込んできて配列及びファイルに
書き込み、その内容を表(HTML)に表示。(即時)
2. 5秒ごとに装置に対してデータを読みに行き(ポーリング)、変化があったら
(セーブしてあるデータと読みに行ったデータに違いがあったら)表(HTML)を
リロードして新しいデータの内容を表示する。
perlのカテゴリで下記のようなアドバイスを頂きましたが、
Javascriptは全くわからず、お手上げ状態です。
>Ajaxを使えばできそうな気がします。
>setInterval(checkData,5000);
>として5秒毎に、checkData関数を呼び出します。
>checkData関数内では、Ajaxを使ってサーバーのデータを読み込み、現在の
>データと照合し、更新していれば、
>location.reload(true);
>として、リロードさせます。
実際にどの様に記述すれば実現可能か、教えていただけませんでしょうか。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
「Ajax」なるバズワードはどうでも良いことで、必要なのは HTTP クライアント。
if ('undefined' === typeof XMLHttpRequest)
XMLHttpRequest = (function() {
var I = arguments.length;
var i;
for (i = 0; i < I; i++) {
try {
arguments[i]();
return arguments[i];
} catch (err) { ; }
}
return null;
})(
function() { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); },
function() { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); })
var gLastModified = 'Tue, 2 Feb 2010 19:43:31 GMT';
var gClient = new XMLHttpRequest;
var gTarget = 'hoge.cgi';
doRequest();
function doRequest() {
gClient.open('GET', gTargetURI, true);
gClient.setRequestHeader('If-Modified-Since', gLastModified);
gClient.onreadystatechange = onreadystatechange;
gClient.send(null);
}
function onreadystatechange() {
if (gClient.readyState === 4 /*XMLHttpRequest.DONE*/) {
try {
switch (gClient.status) {
case 304 :
// Not Modified
break;
case 200 :
// OK
// huga(gClient);
gLastModified = gClient.getResponseHeader('Last-Modofied');
break;
default :
// others
break;
}
} catch (err) { ; }
setTimeout(doRequest, 5000);
}
}
XMLHTTP はその名の通り XML のやり取りに有用です(send() に DOM 文書を渡せば自動的に XML 直列化して POST し、サーバ応答の中身は自動的に DOM 解析される)。しかし一応は XML 以外のデータも扱え、最近では簡易 HTTP クライアントとしての側面が注目されています(いわゆる「Ajax」)。WebSocket や WebWorker が出てくれば、それらと組み合わせてもう少し複雑なやり取りができるようになるでしょう(何と呼ぶようになるのかは分かりませんが)。
No.2
- 回答日時:
ごみ投下。
叩かれ台です。全角空白は半角に。非同期じゃない時点でAjaxじゃないのか?!
そして、これでいいのか?などなど、どなたか教えて~!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title></title>
<body>
<div id="tb"></div>
<script type="text/javascript">
//@cc_on
function getFile( file ) {
var data = null, req;
/*@ try { req = new ActiveXObject( 'Msxml2.XMLHTTP.6.0' ); } catch( e1 ) {
try { req = new ActiveXObject( 'Msxml2.XMLHTTP.3.0' ); } catch( e2 ) { @*/
try { req = new XMLHttpRequest; } catch( e3 ) { return null; } /*@ } } @*/
if( req ) {
req.open( 'GET', file, false );
req.send( '' );
data = 200 == req.status ? req.responseText: 'Error';
req = null;
}
return data;
}
function createHTMLTable( data ) {
var html = [ '<table border="1">' ];
var cnt = 0;
var rows = data.split( /\r\n|\r|\n/g );
var tmp, cells;
while( tmp = rows[ cnt++ ] ) {
cells = tmp.split( /\t|,|\s/g );
html.push( '<tr><td>' + cells.join( '<td>' ) );
}
return html.join( '' ) + '</table>';
}
function updateTable( target, fileName, intervalTime ) {
var e = document.getElementById( target );
var b;
var f = function ( ) {
var data = getFile( fileName );
if( b != data )
e.innerHTML = createHTMLTable( h = data );
};
f();
setInterval( f, intervalTime );
}
updateTable( 'tb', 'test7.html', 5000 );
</script>
No.1
- 回答日時:
ご質問の件は既に回答のあるようにajaxで処理することになりそうです。
ただ、今回の質問内容を見る限り、「ajaxってなんですか?」の
レベルの質問ですので、一度ajaxについて理解を深めてから
再度質問をすることをお勧めします。
ajaxとは・・・を語りだせば本の2~3冊は書ける内容になるので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Excel(エクセル) [Excel2016] 相関表等の自動作成 2 2022/08/01 20:34
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
1日1回引けるJavaScriptおみく...
-
canvas上で画像を移動する方法...
-
var_dumpのdump意味はを知りた...
-
googleスプレッドシートのApps ...
-
GASでundefinedエラーが出ます
-
Google Maps V3のズームの規制
-
どうすれば良いでしょうか?
-
HTMLにWSHを組み込む
-
翌月を取得するGASが分かりません
-
ジェネレーターの作り方
-
ASP.NETのコントロールの値をJa...
-
C言語の質問です HTMLでこのよ...
-
指定日数経過でHTML上のデータ...
-
なぜmatchメソッドがエラーにな...
-
gas スプレッドシートがアクテ...
-
onchangeイベントを使ってspan...
-
同じIDで定義した要素の配列を...
-
Click回数を数え、規定された回...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
var exports = exports || {}; ...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
HTMLで作った時報アプリが動き...
-
javascriptでテーブルに追加し...
-
html javascript リンク先アド...
-
【西暦等の変換】
-
ローカルにあるファイルを検索...
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
カンマで終わってるのはセミコ...
-
JavaScriptで文字列の特定文字...
-
javascriptでiframeのURL変更は?
-
APIを使って埋め込んだグーグル...
おすすめ情報