我的 AJAX 调用没有检索任何数据,只是 "undefined"
My AJAX call is not retrieving any data, just "undefined"
我在 Mashape.com 上为随机电影引述生成器调用 API 时实现了此功能。我最初的意图是构建一个可以生成圣经引语的应用程序。我正在使用这个市场页面 https://market.mashape.com/acg/uncovered-treasure#random。我在控制台中没有收到任何错误,只是这样:
getNewQuote()
arguments: null
caller: null
length: 0
name: "getNewQuote"
prototype: Object { … }
__proto__: function ()
quote1.js:5:9
OPTIONSXHR
https://uncovered-treasure-v1.p.mashape.com/random
[HTTP/1.1 200 OK 170ms]
GETXHR
https://uncovered-treasure-v1.p.mashape.com/random
[HTTP/1.1 200 OK 178ms]
undefined
quote1.js:13:11
undefined
我不明白为什么我没有检索我在函数 displayQuote 中调用的数据(文本、上下文)。我究竟做错了什么?
Jquery:
$(document).ready(function() {
//function to call a quote and bible verse
function getNewQuote() {
console.log(getNewQuote);
$.ajax({
type: "GET",
url: "https://uncovered-treasure-v1.p.mashape.com/random",
data: {},
dataType: "json",
success: function displayQuote(data) {
//display the quote
$("#quote").html(data.text);
console.log(data.text);
//display the book the bible verse is being taken from
$("#author").html("-" + data.context);
console.log(data.context);
//commented the Tweet button out until I can get the quotes to work
// function tweetQuote() {
// var twitterURL =
// 'https://twitter.com/intent/tweet?hashtags=quotes,freeCodeCamp&related=freecodecamp&text="';
// var quote = $("#quote").html();
// var author = $("#author").html();
// twitterURL += text + " " + context;
// $("#tweet").attr("href", twitterURL);
// }
},
//error message to display if the call does not work
error: function() {
prompt("Try again, God is on your side.");
},
//Mashape authorization and key
beforeSend: function setHeader(xhr) {
xhr.setRequestHeader(
"X-Mashape-Key",
"[API-KEY]"
);
xhr.setRequestHeader("Accept", "application/json");
}
});
}
//call a new quote each time the button is clicked
$("#get-quote").on("click", getNewQuote());
// console.log(getNewQuote);
})
那是因为您正在尝试访问 data.context
而 API returns 格式为 data.results
。
results
是一个数组,每个索引都有记录,因此您需要替换 ajax success
中的 data.context
和 data.text
语句函数
data.results[0].context;
和
data.results[0].text;
分别
如果通过 API 返回了多条记录,那么您需要像这样使用 for in
循环
var results = data.results;
for (result in results) {
console.log(data.results[result].context);
}
我在 Mashape.com 上为随机电影引述生成器调用 API 时实现了此功能。我最初的意图是构建一个可以生成圣经引语的应用程序。我正在使用这个市场页面 https://market.mashape.com/acg/uncovered-treasure#random。我在控制台中没有收到任何错误,只是这样:
getNewQuote()
arguments: null
caller: null
length: 0
name: "getNewQuote"
prototype: Object { … }
__proto__: function ()
quote1.js:5:9
OPTIONSXHR
https://uncovered-treasure-v1.p.mashape.com/random
[HTTP/1.1 200 OK 170ms]
GETXHR
https://uncovered-treasure-v1.p.mashape.com/random
[HTTP/1.1 200 OK 178ms]
undefined
quote1.js:13:11
undefined
我不明白为什么我没有检索我在函数 displayQuote 中调用的数据(文本、上下文)。我究竟做错了什么?
Jquery:
$(document).ready(function() {
//function to call a quote and bible verse
function getNewQuote() {
console.log(getNewQuote);
$.ajax({
type: "GET",
url: "https://uncovered-treasure-v1.p.mashape.com/random",
data: {},
dataType: "json",
success: function displayQuote(data) {
//display the quote
$("#quote").html(data.text);
console.log(data.text);
//display the book the bible verse is being taken from
$("#author").html("-" + data.context);
console.log(data.context);
//commented the Tweet button out until I can get the quotes to work
// function tweetQuote() {
// var twitterURL =
// 'https://twitter.com/intent/tweet?hashtags=quotes,freeCodeCamp&related=freecodecamp&text="';
// var quote = $("#quote").html();
// var author = $("#author").html();
// twitterURL += text + " " + context;
// $("#tweet").attr("href", twitterURL);
// }
},
//error message to display if the call does not work
error: function() {
prompt("Try again, God is on your side.");
},
//Mashape authorization and key
beforeSend: function setHeader(xhr) {
xhr.setRequestHeader(
"X-Mashape-Key",
"[API-KEY]"
);
xhr.setRequestHeader("Accept", "application/json");
}
});
}
//call a new quote each time the button is clicked
$("#get-quote").on("click", getNewQuote());
// console.log(getNewQuote);
})
那是因为您正在尝试访问 data.context
而 API returns 格式为 data.results
。
results
是一个数组,每个索引都有记录,因此您需要替换 ajax success
中的 data.context
和 data.text
语句函数
data.results[0].context;
和
data.results[0].text;
分别
如果通过 API 返回了多条记录,那么您需要像这样使用 for in
循环
var results = data.results;
for (result in results) {
console.log(data.results[result].context);
}