忙しい現代人の腰&肩のお悩み対策!

Ajaxの非同期通信は、デフォルトのタイムアウトと表現するより、勝手に接続を放棄する時間は規格や各ブラウザで存在するのでしょうか?
それともサーバー側のApacheやスクリプト言語(例えばPHP)のみ依存するのでしょうか?
Ajaxのタイムアウト関連に詳しい書籍(洋書も可)やサイトを知っている方もお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

XMLHttpRequest仕様書としては、このあたりかも。



-------
Not in this Specification

...(中略)...
・Timers have been suggested, perhaps an ontimeout attribute;
http://www.w3.org/TR/XMLHttpRequest/#notcovered
-------

「XMLHttpRequest Level 2」では上記が削除されていますね。

XMLHttpRequest Level 2
http://www.w3.org/TR/XMLHttpRequest2/


レスポンスヘッダ [Keep-Alive] (接続的接続) に関しては、この辺りを。

[Studying HTTP] HTTP Header Fields
http://www.studyinghttp.net/header#Connection
[Studying HTTP] Persistent Connections
http://www.studyinghttp.net/connections
    • good
    • 0

接続を放棄する時間は規格や各ブラウザで存在するのでしょうか?



==>規格については、W3Cの規格 http://www.w3.org/TR/XMLHttpRequest/
を見ても見当たらないです。(見落としてるかも)

ブラウザーの設定だと、
Firefoxの場合は、アドレス欄に about:config と入力すると各種設定値
の確認・変更が出来ます(むやみに変更すると危険かも)
この中で、
network.http.keep-alive.timeout;115
ってのが、タイムアウトの秒数だと思います。

IEの場合はレジストリーエディターで、
HKEY_CURRENT_USER→Software→Microsoft→Windows→CurrentVersion→Internet Settings
を開いて、keep-aliveのキー値を10進秒数で確認・設定できます。

一方、Webサーバー側にも当然keep-aliveの設定があり、レスポンスヘッダーで
返されてますよね。
Webサーバー側でどこに設定されていて、どうやって変えるかは、
Webサーバーの種類や管理ツールによって異なるから、keep-aliveを検索ワード
にして検索してみれば見つかると思います。(他のブラウザーの場合も)

I
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAjaxでタイムアウトしてしまう

こんにちは。始めまして。

現在、perl & Ajax(prototype.js)でプログラムを組んでいます。

大雑把に言うと、入力されたキーワードにヒットするURLをPerlのLWPでGoogleから拾ってきて、HTML中のIDにAjax.Updaterで表示するものです。
その際、大量のキーワード(例えば300個くらい)を使って検索する場合、Ajax.Updaterがタイムアウトしてしまいます。

<script>
new Ajax.Updater('ggl1','hogehoge.pl',{parameters: '&q=キーワード1'});
new Ajax.Updater('ggl2','hogehoge.pl',{parameters: '&q=キーワード2'});
new Ajax.Updater('ggl3','hogehoge.pl',{parameters: '&q=キーワード3'});
new Ajax.Updater('ggl4','hogehoge.pl',{parameters: '&q=キーワード4'});
new Ajax.Updater('ggl5','hogehoge.pl',{parameters: '&q=キーワード5'});
  (続く続く・・・)
new Ajax.Updater('ggl300','hogehoge.pl',{parameters: '&q=キーワード300'});
</script>

どのようにすれば、タイムアウトさせないように出来るのでしょうか?
お分かりの方がいらっしゃいましたら、ご教授ください。

こんにちは。始めまして。

現在、perl & Ajax(prototype.js)でプログラムを組んでいます。

大雑把に言うと、入力されたキーワードにヒットするURLをPerlのLWPでGoogleから拾ってきて、HTML中のIDにAjax.Updaterで表示するものです。
その際、大量のキーワード(例えば300個くらい)を使って検索する場合、Ajax.Updaterがタイムアウトしてしまいます。

<script>
new Ajax.Updater('ggl1','hogehoge.pl',{parameters: '&q=キーワード1'});
new Ajax.Updater('ggl2','hogehoge.pl',{parameters: '&q=キ...続きを読む

Aベストアンサー

あたしもAjaxは詳しくないので解らないですが・・・

ヤマカンで推定すると、一気に300件のAjaxによるアクセス要求が発生し300件分のアクセスが行われて事故を起こしているのではないかな、と思います。

方向としては、300件のアクセスを一件で済ませる方向が良いのではないかと思います。
例えば・・・

<script>
var arrGgl=new Array();
var arrKey=new Array();
for(var i in objXXX){
arrGgl.push(objXXX[i].name);
arrKey.push(objXXX[i].value);
}
new Ajax.Updater(arrGgl.join(','),'hogehoge.pl',{parameters: '&q='+arrKey.join(',')});
}

こんな雰囲気でどうでしょねぇ?
セパレータ','は、なにかキーワード等には使用されない特定文字にする必要がありますね。
で、perl側で分解して処理する、と・・・。

あたしもAjaxは詳しくないので解らないですが・・・

ヤマカンで推定すると、一気に300件のAjaxによるアクセス要求が発生し300件分のアクセスが行われて事故を起こしているのではないかな、と思います。

方向としては、300件のアクセスを一件で済ませる方向が良いのではないかと思います。
例えば・・・

<script>
var arrGgl=new Array();
var arrKey=new Array();
for(var i in objXXX){
arrGgl.push(objXXX[i].name);
arrKey.push(objXXX[i].value);
}
new Ajax.Updater(arrGgl.join(','),'ho...続きを読む

QAjaxが動きません~『status=0』?

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/index.html
その上で、
  if ((httpObj.readyState == 4) && (httpObj.status == 200))
  {
    displayData();
  } else {
    document.ajaxForm.result.value = httpObj.status;
  }
としました。


これで2日悩んでいるので、解決したいのです。
よろしくお願いいたします。

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/c...続きを読む

Aベストアンサー

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。
ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。

蛇足になりますが
statusを見るだけだったらContent-typeは関係ないですよ。
ファイルが有れば200、エラーならそのエラーコードが入ります。
404 FileNotFoundとかのHTTP Status codeと同じですので。

>   if ((httpObj.readyState == 4) && (httpObj.status == 200))
>   {
>     displayData();
>   } else {
>     document.ajaxForm.result.value = httpObj.status;
>   }
この書き方では、else文はたぶん意味はないと思います。

readyStateの変遷を見るためなら

document.ajaxForm.result.value += httpObj.readyState + ', '+ httpObj.status + '\n';

、、、を、if文の前に書いた方がいいと思います。(たぶん動くと思うので)

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のよ...続きを読む

Q別ファイルのfunctionの読み込み方

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために私が最初に書いたhtmlの文です(もちろん実行できませんでした)
------------------------------------
<html>
<script language="javascript" src="hello.js">
aisatsu(){
document.write(aa);
}
</script></html>
------------------------------------

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために...続きを読む

Aベストアンサー

function内で「var」をつけて変数を宣言するとfunction外からその変数の内容を取得することができなくなります。(returnで参照することはできます。)
なので変数の内容を取得する場合は「hello.js」の内容を

function aisatsu(){
var aa="hello";
return aa;
}

このように修正し、

<script language="javascript" src="hello.js"></script>
<script language="javascript">
var data=aisatsu();//「aisatsu()」関数の「aa」変数内のデータを引っ張り出す(return aa;)
document.write(data);//書いたり
alert(data);//アラートしたり
window.status=data;//ステータスバーに表示したり・・
</script>

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QCSS:span 改行させるには?

こんにちは。
以下のようなHTMLがあります。
HTMLは自動生成のため編集不可なのですが、スタイルシートのみ編集可能です。

<span class="price">4,500円
</span><span class="price2">税込、送料別</span>

現在はそれぞれ、スタイルシートに
フォントカラーサイズ程度が与えられているだけなので

4,500円 税込、送料別

と表示されています。

これを価格のあとで改行させて

4,500円
税込、送料別

と表示にさせることはできないでしょうか。
よろしくお願いいたします。

Aベストアンサー

spanはインラインエレメントですから改行しないのは当たり前です。
<br />使えないのなら…

CSSでブロックにするといいですよ。

span{
display:block;
}

これだと確実に改行されます。

Qconfirm の OK、キャンセル 以外の文字を

javascript の confirm  で、OK、キャンセル以外の文字を出す方法を探しています。

「出せません」とか、「showModalDialog を使用し自作のダイアログ」とかしか見つかりません。

JavaScript だけで、出来ないものなのでしょうか?

Aベストアンサー

jQueryUIのDialogでできます。

以下のサイトの下の方に例が載っていて、そのうちDialog3の例で
OK、キャンセル以外の文字を設定しています。
http://stacktrace.jp/jquery/ui/widgets/dialog.html

Javascriptだけで実現していますが、confirmを使っていないので
質問の意図からはずれてるかもしれませんが。

QEclipseのアンインストールの仕方

 JAVA初心者です、宜しくお願いします。

 Win 7です。
 現在、Eclipse3.1を使っていますが、今度Eclipse3.4にVersionUpしようと考えています。
 Eclipse3.1はAll-In-Oneというパッッケージ?からインストールしました。
 Eclipse3.1をアンインストールしようとしても、「コントロールパネル>プログラム>プログラムのアンインストール」を見ても、Eclipse3.1は表示されていません。

 「コンピューター>C>ProgramFiles>All-In-One-Eclipse」というフォルダーはありますが、
そのフォルダーの中にも、アンインストーラー?らしきものも見当たりません。
 どのようにしてアンインストールしたらいいのでしょうか。
 「全てのプログラム」にも表示されていません。
 (インストール時にそのような設定にしたような気がします。)

 「All-In-One-Eclipse」というフォルダーを削除するとPCに問題が起こりそうな気がします。
 このまま、Eclipse3.4をインストールしても問題が起こりそうな気もします。
 このような場合には、どのようにしたらよいのでしょうか。

 JAVA初心者です、宜しくお願いします。

 Win 7です。
 現在、Eclipse3.1を使っていますが、今度Eclipse3.4にVersionUpしようと考えています。
 Eclipse3.1はAll-In-Oneというパッッケージ?からインストールしました。
 Eclipse3.1をアンインストールしようとしても、「コントロールパネル>プログラム>プログラムのアンインストール」を見ても、Eclipse3.1は表示されていません。

 「コンピューター>C>ProgramFiles>All-In-One-Eclipse」というフォルダーはありますが、
そのフォルダーの中にも、...続きを読む

Aベストアンサー

Eclipseにはインストールもアンインストールもありません。
zipを解凍すれば直ぐに使えます。消すときはフォルダごと消すだけです。

様々なバージョンを同時に使うことも可能ですし、
設定を変えた複数のEclipse の同時利用も可能です。
フォルダが異なれば大丈夫なんです。

私は1台のマシンに Indigo、Ganymede と Juno を入れてます。

Qダブルクォーテーションのreplaceの方法

JavaScriptで文字を置換する際に
AAA = new String(AAA).replace(/ZZZ/g, "QQQ");
にしますよね、これで文字列中のダブルクォーテーション「"」を
任意の文字に変換したいのですが、何か良い方法はないでしょか?

よろしくお願いします。

Aベストアンサー

AAA.replace(/\"/g,"Q");
このように「"」の前に\をつけるといいですよ。

Q子ウィンドウの存在確認

子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。

function OpenSubWindow()
{
if(!w.closed()){
alert('閉じろ!');
}else{
w = window.open("a.html","sub","resizable=no,scrollbars=no");
}
}

この場合、当然のことですが、変数wはelseの中で初めて初期化されるため、ifの条件でオブジェクトが存在しないことによりエラーが発生します。

でも、"sub"というname属性のウィンドウが開いているかどうかを確認したいのですが、どうすればよいのでしょうか?wを初期化する方法が何かあるのでしょうか?それとも、subウィンドウのopen/closeの状態を管理するロジックを作りこまないといけないのでしょうか?

Aベストアンサー

細かなロジックを考える必要はありませんよ。
w がオブジェクトかどうか分からない時点で w.closed を評価するのがマズイだけですから、評価の順番を変えればいいんです。

var w;
function OpenSubWindow() {
  if (!w || w.closed)
    w = window.open("a.html", "sub", "resizable=no,scrollbars=no");
  else
    alert("閉じろ!");
}

ちなみに closed はメソッドではなくプロパティですので、w.closed() ではエラーとなります。
また、既に開いているときの処理は
  w.focus();
とすれば子ウィンドウがアクティブになるのでオススメです。

QJSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?

はじめまして。
質問タイトルの通りです。よろしくお願いします。

Aベストアンサー

サーブレットではそのまま
System.out.println()を
JSPでは
<%= System.out.println() %>(←少し間違えがあるかも知れません)
と記述すれば、できます。


人気Q&Aランキング