Range



【説明】固定長データへRangeでリクエストして必要データを取得します。

【テスト内容】データフォーマットとデータサンプルは通り。
個々の名前やURLだけをRangeでリクエストすることも可能ですが、あまり細かくするとヘッダが無駄なので、ここでは1データ100バイトづつ取得し、各フィールドはsubstrで切り分けています。<固定長データへRangeという趣旨が、、、。<実用的固定長テストということで。
名前 15
姓   15
メモ 25
URL  44
改行  1(LF)

Toshiro        Takahashi      JavaScript kamo nikki    http://jsgt.org/                            
Kazuhiro       Furuhata       Boss of the OpenSpace    http://www.openspc2.org/                    
Jack           Bauer          member of the CTU        http://en.wikipedia.org/wiki/Jack_Bauer     
Tony           Almeida        member of the CTU        http://en.wikipedia.org/wiki/Tony_Almeida   
Nina           Myers          Former member of the CTU http://en.wikipedia.org/wiki/Nina_Myers     
【結果】

【メモ】

<meta http-equiv="content-script-type" content="text/javascript">
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>header Test</title>

<!-- Ajax簡易ライブラリ jslb_ajax.js 
     リクエストヘッダ追記テスト中v039
-->
<script languege = "JavaScript"
        src      = "../../jslb_ajax039-b2.js"
        charset  = "utf-8"></script>

<!-- ヘッダテスト用 -->
<script language = "JavaScript">
<!--

	//for bench mark test
	var startTime = 0;
	var endTime   = 0;

	//////////////////////////////////////////////////////////////////
	////
	// ファイルに対してRange分をリクエスト & ベンチマークテスト開始
	//
	function getPartRange(range)
	{
		startTime = (new Date()).getTime();
		getRange(range);
	}


	function getRange(range)
	{
		//リクエスト
		sendRequest({ 
			onload           : on_range_loaded  ,   //データ受信用コールバック
			onbeforsetheader : setHeaders     //ヘッダセット用コールバック
		}, '','GET','./test.txt',true,true)


		//リクエストヘッダセット用コールバック関数(送信直前にセットされます)
		function setHeaders(oj){
			//Rangeの値をセットしてリクエスト
			oj.setRequestHeader("Range","bytes="+range);
		}
	}

	//データ受信用コールバック関数 ( 受信時に実行されます )
	function on_range_loaded(oj)
	{
	
		//レスポンスヘッダを取得
		headers	= "【レスポンスヘッダ Content-Range:】<br>"+oj.getResponseHeader('Content-Range')
				
		//レスポンスを取得
		var restxt = oj.responseText

		//フィールドをフォーマットで分解
		var name1  = restxt.substr(0,15)
		var name2  = restxt.substr(15,15)
		var memo   = restxt.substr(30,25)
		var url    = restxt.substr(55,44)
		
		var res	= "<br><br>【サーバーから受信したtest.txtのデータ】<br>"
		        + ""
		        + "<table bgcolor='#cccccc' border='1'>"
		        + "	<tr>"
		        + "		<th>名前</th><th>姓</th><th>メモ</th><th>URL</th>"
		        + "	</tr>"
		        + "	<tr>"
		        + "		<td>"+name1+"</td><td>"+name2+"</td><td>"+memo+"</td><td>"+url+"</td>"
		        + "	</tr>"
		        + "</table>"


		endTime = (new Date()).getTime()
		saTime  = endTime - startTime
		
		//レスポンスされた文字列を表示
		document.getElementById('outputdata').innerHTML="<hr>"+headers+res
		
		//ベンチマーク
		endTime = (new Date()).getTime()
		saTime  = endTime - startTime
		document.getElementById('outputdata').innerHTML+="<hr><b>【ベンチマーク】"+saTime+"</b>"
	}


//-->
</script>

<div class="input">

<input type    = "button"
       value   = "getPartRange(0-99)"
       onclick = "getPartRange('0-99')">
<input type    = "button"
       value   = "getPartRange(100-199)"
       onclick = "getPartRange('100-199')">
<input type    = "button"
       value   = "getPartRange(200-299)"
       onclick = "getPartRange('200-299')">
<input type    = "button"
       value   = "getPartRange(300-399)"
       onclick = "getPartRange('300-399')">
<input type    = "button"
       value   = "getPartRange(400-499)"
       onclick = "getPartRange('400-499')">

</div>

<!-- ここへ出力 -->
<div id="outputdata"></div>
【サンプル】 【blog/Forums】
| JavaScript++かも日記 |