/** * リスト表示用商品情報取得JSONPアクセスプラグイン(カスタマイズ案件用) * @param options [in] 取得オプション * modelNoListFile: 品番テキストファイル(1行1品番) * dispMaxCnt: 表示件数上限(0で品番テキストファイルの製品全て) * pageItemMax: 1ページに表示する件数(ページ利用時。それ以外は0) * page: 現ページ番号(ページ利用時。それ以外は0) * callback: 情報取得成功時コールバック(引数はJSONPで取得した製品情報) * jsonpUrl: JSONP取得先URL */ $(function() { $.getAgentItemInfo = function(options) { var defaults = { 'modelNoListFile': '' ,'dispMaxCnt' : 0 ,'pageItemMax' : 0 ,'page' : 0 ,'callback': function(){} ,'jsonpUrl': 'https://db2.nbcuni.co.jp/core_sys/images/others/api/jsonp.php' }; var setting = $.extend(defaults, options); var cnt = 0; var itemList = new Array(); function getInfo(page) { var modelInfo = itemList.shift(); if(modelInfo) { var modelInfoList = modelInfo.split(','); $.ajax( { 'url' : setting['jsonpUrl'] ,'data' : { 'model' : modelInfoList[0] } ,'dataType': 'jsonp' ,'jsonp': 'callback' ,'success': function(data, status) { if(data.item) { setting['callback'](data, modelInfoList[1], page, modelInfoList[2]==1, false); cnt++; } if(setting['dispMaxCnt'] <= 0 || cnt < setting['dispMaxCnt']) { getInfo(page); } else { setting['callback'](null, null, page, 0, true); } } } ); } else { setting['callback'](null, null, page, 0, true); } } $.get(setting['modelNoListFile'], function(data){ var tmp = data.replace(/\r?\n/g, "\n"); itemList = tmp.split("\n"); total = itemList.length; var page = setting['page']; if(setting['pageItemMax'] > 0) { var pageMax = Math.floor(itemList.length/setting['pageItemMax']); if(setting['page'] < 0) { page = pageMax; } else if(pageMax < setting['page']) { page = 0; } itemList = itemList.slice(setting['pageItemMax']*page, setting['pageItemMax']*page+setting['pageItemMax']); } getInfo(page); }); }; });