AutoComplete Control: Basic Remote Data

このサンプルでは、HTTPサーバー配下にあるPHPプログラムからテキストデータを取得して、AutoCompleteを行う。
このPHPプログラム(ysearch_flat.php)は、内部にテキストデータを抱えていて、それを吐き出すだけのものであるが、原理的には(script側から見れば)マッシュアップを行っているのと同じことになる(因みに、このプログラムは、YUIのダウンロードファイルのExamples/autocomplete/assets/php下にある)。

画面は以下。Aを入力して候補を拾ってきたところである。

以下にHTMLの全文を示す。
YUIのExampleでは、XHRDataSourceオブジェクトを使っているが、DataSourceオブジェクトに変更をした。AutoCompleteオブジェクトに対して、DataSourceオブジェクトがうまくインターフェイスとして機能していることがわかる。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
<title>Ajax Sample</title> 
 
<style type="text/css"> 
body {
	margin:0;
	padding:0;
}
</style> 

<link rel="stylesheet" type="text/css" href="scripts/yui/fonts/fonts-min.css" /> 
<link rel="stylesheet" type="text/css" href="scripts/yui/autocomplete/assets/skins/sam/autocomplete.css" /> 
<script type="text/javascript" src="scripts/yui/yahoo-dom-event/yahoo-dom-event.js"></script> 
<script type="text/javascript" src="scripts/yui/connection/connection-min.js"></script> 
<script type="text/javascript" src="scripts/yui/animation/animation-min.js"></script> 
<script type="text/javascript" src="scripts/yui/datasource/datasource-min.js"></script> 
<script type="text/javascript" src="scripts/yui/autocomplete/autocomplete-min.js"></script> 

<style type="text/css" id="defaultstyle">
#main {
	margin: 2px;
	padding: 3px;
}

#myAutoComplete {
    width:15em; /* set width here or else widget will expand to fit its container */
    padding-bottom:2em;
}

</style>

<script type="text/javascript" src="scripts/yui/autocomplete/assets/js/data.js"></script> 
<script type="text/javascript"> 
YAHOO.util.Event.addListener(window, "load", function() {
	
	YAHOO.example.BasicRemote = function() {

	// DataSourceの作成。
    	var oDS = new YAHOO.util.DataSource("scripts/yui/autocomplete/assets/php/ysearch_flat.php");
        // データタイプ
    	oDS.responseType = YAHOO.util.DataSource.TYPE_TEXT;
    	// データのデリミッターを取得
    	oDS.responseSchema = {
        	recordDelim: "\n",
        	fieldDelim: "\t"
    	};
    	// Cacheサイズ
    	oDS.maxCacheEntries = 5;
    	    	    
	// AutoCompleteインスタンスの生成
	var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS);
	    	      
        return {
            oDS: oDS,
            oAC: oAC
       };
    }();
});
</script>
</head> 
 
<body class=" yui-skin-sam">
<div id="main">
<p>AutoCompleteのサンプルです。<br/>
HttpサーバーにあるPHPプログラムから、データを取得します。</p>
<div id="myAutoComplete"> 
	<input id="myInput" type="text"> 
	<div id="myContainer"></div> 
</div> 
</div>
</body> 
</html>