jQuery $ .ajax - 如何为此API构建get请求?

时间:2016-07-04 02:12:24

标签: jquery stackexchange-api

我正在尝试调用此API并返回一个json对象。我想为我传入的标签返回一个顶级回答者的数组。我在$ .ajax调用中构建字符串时遇到了麻烦。

API链接 - - > http://api.stackexchange.com/docs/top-answerers-on-tags

此代码有效:

console.log(
$.ajax({
    url: "http://api.stackexchange.com/2.2/tags/jquery/top-answerers/all_time?site=stackoverflow",
    dataType: "jsonp",
    type: "GET",
}));

但是这段代码不起作用。它在控制台“Uncaught SyntaxError:Invalid or unexpected token”

中抛出错误
var getTopAnswerers = function(tag) {
// tag is a string passed in via the html form
// the parameters we need to pass in our request to StackOverflow's API
var request = { 
    tag: tag,
    period: 'all_time',     
    site: 'stackoverflow',
};
$.ajax({
    url: "http://api.stackexchange.com/2.2/tags{tag}/top-answerers/",
    data: request,
    dataType: "json",
    type: "GET",
})

所以我尝试了硬编码标签值,仍然没有运气。 API会返回一个标记对象列表,以便显示为问号标记列表。 http://api.stackexchange.com/2.2/tags?tag=jquery&period=all_time&site=stackoverflow

var getTopAnswerers = function() {
var request = { 
    tag: 'jquery',
    period: 'all_time',     
    site: 'stackoverflow',
};
$.ajax({
    url: "http://api.stackexchange.com/2.2/tags",
    data: request,
    dataType: "json",
    type: "GET",
})
};

我也尝试在json和jsonp之间切换dataType。

TL; DR:请帮我构建$ .ajax的正确字符串以与API接口。

编辑: 有人指出我有一些错误的逗号。修复了逗号仍然没有构建字符串的问题。

var getTopAnswerers = function() {
var request = { 
    tag: 'jquery',
    period: 'all_time',     
    site: 'stackoverflow'
};
$.ajax({
    url: "http://api.stackexchange.com/2.2/tags",
    data: request,
    dataType: "json",
    type: "GET"
})
};

1 个答案:

答案 0 :(得分:3)

您需要在解析Deferred对象时调用处理程序



function getTopAnswerers(tag) {
  var request = {
    site: 'stackoverflow'
  };
  $.ajax({
    url: "http://api.stackexchange.com/2.2/tags/"+tag+"/top-answerers/all_time",
    data: request,
    dataType: "json",
    type: "GET"
  }).done(function(data) {

    console.log(data);

  });
}

getTopAnswerers('jquery');
getTopAnswerers('html');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
&#13;
&#13;
&#13;