Ajax API搜索中未定义searchCallBack
我正在尝试在烂番茄网站上搜索他们的电影,当我尝试键入“TOY”时,我得到了一个未定义的searchCallBack,搜索应该返回包含单词TOY的电影。顺便说一句,我对阿贾克斯完全陌生。我在开发者工具控制台中发现了这个错误 代码如下:Ajax API搜索中未定义searchCallBack,ajax,Ajax,我正在尝试在烂番茄网站上搜索他们的电影,当我尝试键入“TOY”时,我得到了一个未定义的searchCallBack,搜索应该返回包含单词TOY的电影。顺便说一句,我对阿贾克斯完全陌生。我在开发者工具控制台中发现了这个错误 代码如下: $(function () { // You will need this API key in order to call the Rotten Tomatoes API. var apiKey = *removed for security pu
$(function () {
// You will need this API key in order to call the Rotten Tomatoes API.
var apiKey = *removed for security purposes;
var baseUrl = "http://api.rottentomatoes.com/api/public/v1.0";
var moviesSearchUrl = baseUrl + '/lists/movies/box_office.json?apikey=' + apiKey
document.getElementById('searchBox').addEventListener('keydown', function (event) {
if (event.which === 13 || event.keyCode === 13) {
var searchText = this.value;
$(document).ready(function () {
$.ajax("http://api.rottentomatoes.com/api/public/v1.0/movies.json", {
q: 'TODO put in search text',
page_limit: 10,
page: 1,
success: seachCallBack(),
dataType: 'jsonp'
});
});
// callback for when we get back the results
function searchCallback(data) {
var movies = data.movies;
$.each(movies, function (index, movie) {
$(document.body).append('<h1>' + movie.title + '</h1>');
$(document.body).append('<img src="' + movie.posters.thumbnail + '" />');
});
}
}
});
});
$(函数(){
//您需要此API键才能调用Rotter Tomatos API。
var apiKey=*出于安全目的被删除;
var baseUrl=”http://api.rottentomatoes.com/api/public/v1.0";
var moviesSearchUrl=baseUrl+'/lists/movies/box_office.json?apikey='+apikey
document.getElementById('searchBox')。addEventListener('keydown',函数(事件){
if(event.which==13 | | event.keyCode==13){
var searchText=this.value;
$(文档).ready(函数(){
$.ajax(”http://api.rottentomatoes.com/api/public/v1.0/movies.json", {
q:‘TODO输入搜索文本’,
页数限制:10页,
页码:1,
成功:seachCallBack(),
数据类型:“jsonp”
});
});
//返回结果时的回调
函数searchCallback(数据){
var movies=data.movies;
$.each(电影,功能(索引,电影){
$(document.body).append(“”+movie.title+“”);
$(document.body).append(“”);
});
}
}
});
});
在Ajax请求回调中,您将函数“seachCallBack”拼错了。如果拼写正确,它应该可以工作。应该是“searchCallback”
$(函数(){
var apiKey=“出于安全目的删除”;
var baseUrl=”http://api.rottentomatoes.com/api/public/v1.0";
var moviesSearchUrl=baseUrl+'/lists/movies/box_office.json?apikey='+apikey
函数keydownHandler(evt){
if(event.which==13 | | event.keyCode==13){
var searchText=this.value;
$.ajax(”http://api.rottentomatoes.com/api/public/v1.0/movies.json", {
问:搜索文本,
页数限制:10页,
页码:1,
成功:搜索回调,
数据类型:“json”
});
}
}
//返回结果时的回调
函数searchCallback(数据){
var movies=data.movies;
$.each(电影,函数(索引,电影){
$(document.body).append(“”+movie.title+“”);
$(document.body).append(“”);
});
}
$(“#搜索框”).addEventListener('keydown',keydownHandler);
});
谢谢,但当我搜索“toy”时,即使我已经更正了拼写,它仍然会给我错误“searchCallback未定义”。请在keydown处理程序之外定义回调函数。您还应该将Ajax调用移到keydown处理程序之外。此外,使用Jquery中的$(function(){})会使用document.onReady,因此在定义Ajax请求时无需再次调用它。
$(function () {
var apiKey = "removed for security purposes";
var baseUrl = "http://api.rottentomatoes.com/api/public/v1.0";
var moviesSearchUrl = baseUrl + '/lists/movies/box_office.json?apikey=' + apiKey
function keydownHandler(evt) {
if (event.which === 13 || event.keyCode === 13) {
var searchText = this.value;
$.ajax("http://api.rottentomatoes.com/api/public/v1.0/movies.json", {
q: search text,
page_limit: 10,
page: 1,
success: searchCallback,
dataType:"json"
});
}
}
// callback for when we get back the results
function searchCallback(data) {
var movies = data.movies;
$.each(movies, function (index, movie) {
$(document.body).append('<h1>' + movie.title + '</h1>');
$(document.body).append('<img src="' + movie.posters.thumbnail + '" />');
});
}
$('#searchBox').addEventListener('keydown', keydownHandler);
});