在CHROME控制台上已经用JS代码获得了ISBN的情况下, 如何通过豆瓣的API获取图书的评分?

2024-12-20 01:40:24
推荐回答(2个)
回答1:

这个。。  提供的数据应该是需要使用 JSON来请求吧。


虽然 jq 有jsonp,但是一直没有成功使用过。。 所以自己写了一个简单的。

var jsonp = function (url, callback) {
    if (typeof url=== 'undefined') {
        throw 'the 1st param "url" missing';
    }
 
    if (typeof callback === 'undefined') {
        throw 'the 2nd param "callback" missing';
    }
 
    var jsonpcallback = 'callback' + new Date().valueOf();
    if (typeof callback !== 'string') {
        window[jsonpcallback] = callback;
        callback = jsonpcallback;
    } else {
        window[jsonpcallback] = function (data) {
            eval(callback).call(window, data);
        }
    }
 
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', url + (url.indexOf('?') == -1 ? '?' : '&') + 'callback=' + jsonpcallback);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(script);
};

然后,你在页面中这样调用:

jsonp('https://api.douban.com/v2/book/isbn/9787115299710', function (data){
    var title = data.title;
    // 你自己的数据处理 可以通过  for..in 的结构来遍历data的属性。
});

还是补充一下吧,这样可以取到返回的所有数据(

  • 结构
  • ....
),在上面的回调里面调用这个函数:

function getObjectData(data){
    var f_this = arguments.callee;
    var $ul = $('
    ');
     
        for(var item in data){
            var row = data[item];
            var $li = $('
  • ');
            if(!$.isPlainObject(row) && !$.isArray(row)){
                $li.append(item + ':' + row);                        
            }else{
                $li.append(item).append(f_this(row));
            }
            $ul.append($li);
        }
        return $ul;
    }

回答2:

这个要查一下豆瓣官网的API了,用token的方式,来get一下