- 締切済み
URLの値を取得
JavaScritpt初心者です。 はてなブックマーク件数取得APIの使い方についてです。 URLで取得できる数値を、関数でreturnしたいです。 URL=http://api.b.st-hatena.com/entry.count?url=https://www.google.co.jp/ したいこと(不完全) function test(){ return <script src="http://api.b.st-hatena.com/entry.count?url=https://www.google.co.jp/"></script> } いろいろ調べてますが、、、情けないです。 使用例 http://d.hatena.ne.jp/amachang/20090811/1249963519 API公式 http://hatena.g.hatena.ne.jp/hatenabookmark/20090811/1249961864
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 とりあえず組み込むならこんな感じになると思いますよ。 (もっとよい方法があるかもしれませんが) Ajax通信を簡単に行うためにjQueryを併用しています。 ==== JavaScript google.load ( "feeds", "1" ); google.load ( "jquery", "1" ); function initialize() { // 複数のURLから取得できるAPIを利用 var apiURL = 'http://api.b.st-hatena.com/entry.counts'; // ターゲットとなるURLを保持する配列 var urls = new Array(); var feed_entry = new google.feeds.Feed ( "http://rssblog.ameba.jp/staff/rss.html" ); feed_entry.setNumEntries ( 5 ); feed_entry.load(function (result) { if (!result.error) { var container = document.getElementById ( "entry" ); var htmlsur = ""; for ( var i = 0; i < result.feed.entries.length; i ++ ) { var entry = result.feed.entries[i]; if ( entry.title.indexOf('PR') == 0 ) { // PRの場合はURLを取得しない } else { // URLを追加 urls.push ( entry.link ); } } $.ajax ({ type: 'GET', url: apiURL, data: { url: urls }, traditional: true, dataType: 'jsonp', success: function ( data, dataType ) { // { "URL": 件数 }で返ってくる for ( var i = 0; i < result.feed.entries.length; i++ ) { var entry = result.feed.entries[i]; htmlsur += "<p>"; if ( entry.title.indexOf('PR') == 0 ) { // PRは表示しない } else { htmlsur += '<a href="' + entry.link + '">' + entry.title + '</a>'; } // URLをキーに件数を取得してHTML文字列に追加する htmlsur += '<span class="count">' + data[entry.link] + '</span>'; htmlsur += "</p>"; } container.innerHTML = htmlsur; }, error: function ( v1, v2, v3 ) { } }); } else { alert(result.error.message); } }); } google.setOnLoadCallback(initialize);
- LancerVII
- ベストアンサー率51% (1060/2054)
>APIでURL、名前までは取得できますが、それぞれのはてなブックマーク数(当該)が取得できていません。さらに別のABIを使うため。 > >教えていただいたコードですと、onloadということですが、 >取得するURLがその都度変わるため困っています。 こんにちは。 どのAPIを利用してURLと名前を取得していますか? それに件数は含まれてこないのでしょうか? 現在、どのように実装しているか補足ください。 今、どのように動いてるかがわからないと、ずれた回答をしてしまいそうです。
お礼
お忙しいところ、大変ありがとうございます。 ソースをWebにあげました。 http://help2014.web.fc2.com/ 恐縮ですが、もしできましたら、ご確認いただければ幸いです。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >ありがとうございます。とても勉強になりました。 >jsファイル内に別のjsファイル読み込みは常識的にしないのでしょうか。 常識非常識ではなく、必要なら読み込みます。 さきのやり方だと、難しいことを考えずに実装できます。 > > >abc.jsファイル > >function hoo(){ >var container = document.getElementById("idtest"); >var htmlsuc=""; >htmlsuc+='<script src="http://api.b.st-hatena.com/entry.count?url=http%3A%2F%2Fwww.example.com%2F&callback=document.write"></script>'; > >container.innerHTML = htmlsuc; >} > > >↑上手く行きませんが。 >困っています。 動的に読み込むなら以下のようになると思います。 ==== test.js var count = 0; window.onload = function() { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://api.b.st-hatena.com/entry.count?url=http%3A%2F%2Fwww.example.com%2F&callback=hoo'; document.body.appendChild ( script ); } function hoo ( value ) { count = value; var container = document.getElementById("idtest"); container.innerHTML = value; } function getCount() { return count; } ==== HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>8440839</title> <script src="test.js"></script> </head> <body> <div id="idtest"></div> <button onclick="alert(getCount());">retrunされる値を表示</button> </body> </html>
お礼
度々すみません。 嫁のはてブ http://hatebu.straightline.jp/ のようなサイトを作りたいと考えてます。 APIでURL、名前までは取得できますが、それぞれのはてなブックマーク数(当該)が取得できていません。さらに別のABIを使うため。 教えていただいたコードですと、onloadということですが、 取得するURLがその都度変わるため困っています。 window.onloadを使わずにできないでしょうか。
補足
早速のご回答ありがとうございます。 回答者様のような才能が本当にうらやましいです。 自分にはセンスや頭のなさを痛感します。 一体どうしたら、そのようになれるか。。。 教えていただいたコードで、試行錯誤してみます。 自分は、理解力がなくノロマなので、時間がかかってしまいます。 また、質問させていただくかもしれませんが、何卒よろしくお願いします。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 以下のようにすれば変数に値が入ります。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>8440839</title> <script> var bookmarkCount = 0; function setBookmarkCount ( value ) { // callback関数 bookmarkCount = value; } function getBookmarkCount() { return bookmarkCount; } window.onload = function() { // ページロード後に取得した件数の確認 alert ( getBookmarkCount() ); } </script> <script src="http://api.b.st-hatena.com/entry.count?url=http%3A%2F%2Fwww.example.com%2F&callback=setBookmarkCount"></script> <style> </style> </head> <body> </body> </html>
お礼
ありがとうございます。とても勉強になりました。 jsファイル内に別のjsファイル読み込みは常識的にしないのでしょうか。 abc.jsファイル function hoo(){ var container = document.getElementById("idtest"); var htmlsuc=""; htmlsuc+='<script src="http://api.b.st-hatena.com/entry.count?url=http%3A%2F%2Fwww.example.com%2F&callback=document.write"></script>'; container.innerHTML = htmlsuc; } ↑上手く行きませんが。 困っています。
補足
お忙しいところ、誠にありがとうございます。 とても参考になりました。 私の力不足のため、ゆっくりとコードを拝見して理解していきたいと思います。申し訳ありません。 jQueryというのは、初めて見ました。