【发布时间】:2016-11-05 16:13:10
【问题描述】:
我正在尝试调用此 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"
})
};
【问题讨论】:
-
尝试中的 URL 与有效的不匹配
-
我列出了简单易懂的 'what works' 网址,因此人们对我正在尝试构建的内容有所了解。
-
然后您需要使用 api 文档来获取自己的 url 参数,然后让您的代码构建正确的 url。像 Postman 这样的 Rest 客户端将节省您测试参数和结果的时间
-
如果我能通过 api 文档自己弄清楚,我就不会在这里寻求帮助。我想出了足够多的 youtube API 来获得我需要的东西,但是这个特定的 API 期望构建字符串的方式让我很难过。
-
这就是为什么你在像邮递员这样的休息客户端中玩,这样你就可以立即测试而无需在浏览器中加载。然后逆向工程在那里工作