使用JQuery对StackOverflow API

时间:2013-05-28 13:14:31

标签: jquery api callback

我正在尝试学习如何通过JQuery发出JSON请求。根据我对StackExchange Docs的理解,这是可能的。但是,我不明白我的一些参数值应该是什么。例如,假设我正在尝试获取“JSON”和“JQuery”的标记信息。目前,我有以下内容:

var url = "/2.1/tags/JQuery,JSON/info?callback=?";
$.getJSON(url, function (tags) {
  alert(tags.length);
});                    

目前,我有以下问题:

  1. 需要将哪个域添加到url
  2. 我需要传递钥匙吗?我使用StackExchange应用程序注册了我的应用程序,但是,我不知道如何添加该信息,或者在这种情况下是否需要它。
  3. 我的{Tags}替换格式是否正确?
  4. 我正在尝试成功查询标记端点,以便我可以学习这种类型的请求。

    谢谢!

2 个答案:

答案 0 :(得分:1)

尝试以下代码,

var URL = "http://api.stackoverflow.com/1.1/tags/";
$.ajax({
    dataType: 'jsonp',
    jsonp: 'jsonp',
    url: URL,
    success: function(val) {
       alert(val.total);
    },
    error: function(val) {
        console.log('error');
        console.log(arguments);
    }
});

阅读API documentation以获取有关可用API的更多详细信息

http://jsfiddle.net/J6u5C/

更新


根据您的评论查看更新的示例 http://jsfiddle.net/J6u5C/1/

var URL ="http://api.stackexchange.com/2.1/tags/jquery;json/info?site=stackoverflow";
$.ajax({
    dataType: 'jsonp',
    jsonp: 'jsonp',
    url: URL,
    success: function(val) {
       alert(val.items.length);
    },
    error: function(val) {
        console.log('error');
        console.log(arguments);
    }
});

并回答你的问题,

  • 需要将哪个域添加到网址?
  

http://api.stackexchange.com

  • 我需要传递密钥吗?
  

没有

  • 我的{Tags}替换格式是否正确?
  

格式由;(半冒号)而不是,(逗号)分隔

答案 1 :(得分:0)

谢谢Chamika!

我已经拿走了你的小提琴并稍微扩展了一下,所以它不仅仅是弹出警报。它现在迭代返回的信息并创建一些显示返回值的标记。

http://jsfiddle.net/J6u5C/2/

var URL ="http://api.stackexchange.com/2.1/tags/jquery%3Bjson/info?site=stackoverflow";
$.ajax({
  dataType: 'json',
  jsonp: 'json',
  url: URL,
  success: function(val) {
    $.each(val, function(item, vals) {
       var my_div = $('body').append('<div>' + item + '</div>');
       if (item === 'items') {
            $.each(vals, function(idx, tag) {
                my_div
                   .append('<div class="tag">' + tag.count + ' : ' + tag.name + '</div>')
            });
        }
        else if (item === 'quota_remaining' || item === 'quota_max') {
            my_div
                .append('<div class="quota">' + vals + '</div>')
        }
        else if (item === 'has_more') {
            my_div
                .append('<div class="hasmore">' + vals + '</div>')
        }
    });
  },
  error: function(val) {
    console.log('error');
    console.log(arguments);
  }
});