図0301a
まず、リンク先を見ていただくと、これまではPHPファイルでしたが、今回は/source/prefecture_list_json.htmlになってるのがわかると思います。そうです、今回は通常のHTMLドキュメントがサンプルになります。
1、/source/prefecture_list_json.htmlにリクエスト 2、HTMLロード時に/source/prefecture_list_json.phpにリクエスト 3、PHPからJSONデータのレスポンスを得る 4、JavaScript(AJax)で文書成型
1、ページリンククリックで/source/prefecture_list_json.phpにリクエスト 2、PHPからJSONデータのレスポンスを得る 3、JavaScript(AJax)で文書成型
{"allcount":"48","limit":20,"page":1, "rowdata":[ {"prefecture_id":"1","prefecture_name":"\u5317\u6d77\u9053"}, {"prefecture_id":"2","prefecture_name":"\u9752\u68ee\u770c"}, ....以下省略
//ライブラリをインクルード require_once("inc_base.php"); require_once($CMS_COMMON_INCLUDE_DIR . "libs.php"); //ページの設定 //デフォルトは1 $page = 1; //もしページが指定されていたら if(isset($_GET['page']) //なおかつ、数字だったら && cutil::is_number($_GET['page']) //なおかつ、0より大きかったら && $_GET['page'] > 0){ //パラメータを設定 $page = $_GET['page']; } //1ページのリミット $limit = 20; $rows = array(); //データの読み込み readdata(); //一覧データをjsonで返す echo json_encode($rows); ///////////////////////////////////////////////////////////////// /// 関数ブロック ///////////////////////////////////////////////////////////////// //-------------------------------------------------------------------------------------- /*! @brief データ読み込み @return なし */ //-------------------------------------------------------------------------------------- function readdata(){ global $limit; global $rows; global $page; $obj = new cprefecture(); $allcount = $obj->get_all_count(false); $rows['allcount'] = $allcount; $rows['limit'] = $limit; $rows['page'] = $page; $from = ($page - 1) * $limit; $rows['rowdata'] = $obj->get_all(false,$from,$limit); }
function read_phpdata(pageid){ $.ajax({ type: "GET", url: "prefecture_list_json.php", data: "page=" + pageid.toString(), dataType: "json", crossDomain: false, scriptCharset: 'utf-8' }).done(function(data){ // 成功 //ページブロックの書き出し var PageStr = ""; var pagemax = Number(data.allcount) / Number(data.limit); if(Number(data.allcount) % Number(data.limit)){ pagemax++; } if(pagemax > 1){ for (var i = 1; i <= pagemax; i++){ if(i != 1){ PageStr += ' > '; } if(i == Number(data.page)){ PageStr += i.toString(); } else{ PageStr += '<a href=\"javascript:void(0);\" onClick=\"read_phpdata(' + i.toString() + ');\" >' + i.toString() + '</a>'; } } } $('#pageBlock').html(PageStr); //一覧ブロックの書き出し $('#dataTable').find("tr:gt(0)").remove(); for (var i = 0; i< data.rowdata.length; i++){ $('#dataTable').append( '<tr><td width="20%" class="center">' + data.rowdata[i].prefecture_id + '</td><td width="80%" class="center">' + data.rowdata[i].prefecture_name +'</td></tr>'); } }).fail(function(jqXHR,textStatus, errorThrown){ // エラーの場合処理 $("#pageBlock").text("エラーが発生しました:" + jqXHR.status + ": " + errorThrown); }); }
<link href="css/main.css" rel="stylesheet" type="text/css">