• 締切済み

オークションの出品商品を表示したい

オークションの出品商品を表示したい Yahoo!知恵袋で質問をしていたのですが 文字数の制限がありなかなか思い通りの質問ができず こちらで再度質問させていただきます Yahoo!知恵袋 オークションの出品商品を表示したい 一回目 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1442614529 二回目 http://ksrd.yahoo.co.jp/PAGE=MY_QUELIST/LOC=QUELIST/R=2/O=DT/*-http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1442821189 三回目 http://ksrd.yahoo.co.jp/PAGE=MY_QUELIST/LOC=QUELIST/R=1/O=DT/*-http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1443013069 今回こちらの記事 ASCII.jp:JSONP×jQueryでヤフオクAPIを活用しよう http://ascii.jp/elem/000/000/441/441619/ を参考に出品している自分の商品を表示したいのです。 この記事ですと一度XMLで受け取りJSONPに変換していますが 今回はそのままJSONPで受け取りたいのと思っています。 いままで色々教えていただき ・Version1とVersion2の違い ・レスポンスフィールドの名称の違い ・ItemUrlではなくAuctionItemUrlではないのか? ・jquery-jsonpやjquery.jsonpなどのプラグインを使用してはどうか? ・ <div id="yahoo_auction"></div>はちゃんと書かれているか? などご指摘の上に コードまで書いて頂いたのですが 「Yahoo!オークションAPI出品リストサンプル」は表示されていますけれど 未だ画面は真っ白のままなのです 教えて頂いたこのコードが一番わかり易いのですが http://gist.github.com/454883 var appid = 'your application id'; var sellerid = 'seller id'; この二行で自分のアプリケーションIDとYahoo! JAPAN IDを入れるだけのハズが うまく動いてくれません 理想としては二つめに教えていただいたコードのように jquery-jsonp/プラグインを使い エラー処理まで出来ることです http://gist.github.com/454948 「Yahoo!オークションAPI出品リストサンプル・jquery-jsonpプラグイン使用 APIの取得に成功しました!」 までは表示されるのですが肝心の出品データは真っ白なのです Yahoo!デベロッパーネットワークの トップ > アプリケーションIDの管理 > アプリケーションIDのリクエスト履歴 を見るとリクエスト履歴が残っているので データは受け取って入るのですが 受けっとったデータを表示できていないみたいです どなたか良いお知恵をお願いいたします こちらの環境は OSX 10.5.4 MAMP FireFox 3.6.6 ローカルでの環境がまずいのかと思い レンタルサーバへアップしてみたのですが 画面は真っ白のままでした レンタルサーバはエックスサーバです

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

itemsearchの続き---------  //Item Listing     var items=data.ResultSet.Result.Item;     var result=$('<dl style="margin-left:10px;">');     for(var i=0;i<items.length;i++){     result.append('<dt style="clear: both;"><a href="' + items[i].AuctionItemUrl + '" target="_blank">'            + '(' +items[i].AuctionID +')</a></dt>'            + '<dd>'            + '<img src="' + items[i].Image + '" '            + 'style="width:150px;height:100px;float:left;">'            + '<div style="margin-left:170px;">'            +'<a href ="' + items[i].ItemUrl + '" target="_blank">'            + items[i].Title +'</a><br>'            + '価格:' + parseInt(items[i].CurrentPrice) + '円<br>'            + '即決価格:' + parseInt(items[i].BidOrBuy) + '円<br>'            + '入札数:' + items[i].Bids + '件<br>'            + '終了予定日時:' + items[i].EndTime + '<br>'            + '最低落札価格:' + (!items[i].IsReserved?'有り':'無し') + '<br>'            + '</div>' + '</dd>');     }    }else{     var result=$("<dl>該当商品無し</dl>");    }     resultarea.append(result);  //Navigation Control     $('span > a',resultarea).css({margin:"5px",color:"black",background:"#FFF"});     $('span > a:eq('+ (req_page-1) + '),resultarea').css("background","yellow");     resultarea.append('<hr style="clear: both;">');     resultarea.append(nextguide.clone(true));    },  //Ajaxエラー処理    error: function(XMLHttpRequest, status, errorThrown){     alert("通信エラー:"+XMLHttpRequest.url + ":"+ status);    }   }); } 使い方の例、 <body> <div><h3>Yahoo!オークション検索</h3>  <div>出品者(=sellerID):   <input id="sellerid" type="text" width="50">   <input id="kensaku_button" type="button" value="検索">  </div>  <hr>  <div id="YahooResult">(出品物検索結果)</div> </div> <hr> <!-- Debug用 <pre id="debug"></pre> --> <script type="text/javascript"> // var dumper=new JKL.Dumper(); // <=デバッグ用 $(document).ready(function(){  $("#YahooResult>dl,#debug").empty();   $("#kensaku_button").bind("click",function(){   itemsearch($("#YahooResult"),$('#sellerid').val(),1);  }); }); </script> </body>

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

焼け石に水となるかもしれませんが、結果を表示するDIVと出品者IDと開始ページ を指定して、表示する関数のサンプルをjQueryで作りました。 ※コメントアウトしてありますが、デバッグ用のツールも参考に  JSONデータダンプクラス   http://www.kawa.net/works/js/jkl/dumper.html ※多少長いので分割して投稿します。 (サンプル --その1)------------------------ function itemsearch(div,id,page){   var resultarea=div;   var sellerid=id;   var req_page=page;   $.ajax({    type: "GET",    url:"http://auctions.yahooapis.jp/AuctionWebService/V2/json/sellingList?",    data: {    "appid":"LyhQSZ2xg67jWd3iPDx5zSOVrn7gR16oEEflf8YBcrA9oibkL_1fOq9xQPpGIh7K9Q--",    "sellerID":sellerid,    "page":req_page    },    dataType: "jsonp",    success: function(data,status){    resultarea.empty(); //Debug // $("#debug").empty(); // document.getElementById("debug").innerHTML=dumper.dump(data); //    var total_item_su=data.ResultSet.@attributes.totalResultsAvailable;    var item_su=data.ResultSet.@attributes.totalResultsReturned;    var item_pos=data.ResultSet.@attributes.firstResultPosition;    if(total_item_su != 0){     if(total_item_su - item_su > 0){  //Navigation gen     var nextguide=$(document.createElement("span"));     for(var i=0;i<Math.ceil(total_item_su/50);i++){      var nexta =$(document.createElement("a"));      nexta.attr({href:"javascript:void(0);"});      nexta.text((i+1)+"頁目");      nexta.bind("click", function(event){      event.preventDefault();      itemsearch(resultarea,sellerid,$(this).text().substring(0,1));      });      nextguide.append(nexta);     }     resultarea.append(nextguide);     } 続く

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

回答者のコードを張り付けて、眺めてるだけでは、なかなか解決しない物です。 まず、根本的な所として取得したアプリケーションIDとか有効ですか? ブラウザーのアドレス欄にGET要求を張り付けて、レスポンスが表示されるのを 確認しましょう。  (※※※※がアプリケーションIDとして、yokouchiは誰か知りませんが) http://auctions.yahooapis.jp/AuctionWebService/V2/json/sellingList?appid=※※※※&sellerid=yokouchi それから、jQuery本体だけで出来ます。jsonpのプラグインなんか不用です。 まずはシンプルにやりましょう。徐々にグレードアップしていくのです。  ※JSONよりXMLを直に弄った方が楽だと感じるようになった今日この頃ですが... とりあえずのデバッグ用サンプルです。 [object Object]と下に出ればOKです。 Firefoxならdata.toSource();使ってもっとデバッグしやすいですが... (※全角空白は半角空白にすること) -------------------------------------------------- <script type="text/javascript" charset="utf-8" src="/jslib/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#kensaku_button").bind("click", function(){  var sellerid=$('#sellerid').val();  $.ajax({   type: "GET",   url:"http://auctions.yahooapis.jp/AuctionWebService/V2/json/sellingList?",   data: {    "appid":"※※※※",    "sellerID":sellerid   },   dataType: "jsonp",   success: function(data,status){   document.getElementById("debug").innerHTML=data.toString(); //ここに結果を成形する処理   },   error: function(XMLHttpRequest, status, errorThrown){    alert("エラー");   }  });  return false; }); }); </script> </head> <body>  <div id="header"><!-- #header --></div>  <div id="container">   <div id="YahooSarch">    <h1>Yahoo!オークション検索</h1>    <div>出品者のID:    <input id="sellerid" type="text" width="50"/>    <input id="kensaku_button" type="button" value="検索"/>    </div>    <hr />    <div id="YahooResult">(商品検索結果)    </div>   </div>  </div> <pre id="debug"><pre> </body> 出品リストが大量にあることも想定して、ページングしながら検索 する仕組みにしてナビゲーションバーでも作った方がよさげだなあ。

uzura_tama
質問者

お礼

yyr446様 ご指摘ありがとうございます。 アプリケーションIDのチェックは http://auctions.yahooapis.jp/AuctionWebService/V2/json/sellingList?appid=「アプリケーションのID」&sellerID=「Yahoo! JAPAN ID」&callback=aaa とブラウザに入力すると aaa( {"ResultSet":{"@attributes":{ xxx }, "Result":{ "Seller": xxx { "Rating":{ xxx } }, "Item":{ xxx "Option":{ xxx } } } }}) このような形で帰ってきます。 出品している商品がないときでも loaded({"ResultSet":{"@attributes":{"totalResultsAvailable":"0","totalResultsReturned":"0","firstResultPosition":"0"},"0":"\n"}}) このように該当件数が「0」という事を表示してくれます。 Yahoo!デベロッパーのID管理のページでは 最新アクセス日 2010-07-02 リクエスト数 8 となっているので 動作はしているみたいです。 がしかし 教えていただいたコードの   data: {    "appid":"※※※※",    "sellerID":sellerid   }, の場所にそれぞれアプリケーションIDを入れても 白紙のまま動作しません もちろん「出品者のID:」という文字の横に検索ウィンドがあるのでYahoo! JAPAN IDを入力し、検索ボタンをクリックするのですが動作はしませんでした。 コードもまるまるコーピー(もちろん<html>や</html>などは追記して)しているので、 いったいどこが原因で動作しないのか分からないというのが、 ひと月ぐらいつづいているのです。 JavaScript自体不慣れなので、みなさんに教えていただいたコードは プリントアウトして分かるところから消していく消去法で、 理解していく方法をとっております。 方法としては遅いのですが・・・。