Javascript 为什么我只被返回了3张图片而不是正确的数量?
我目前正在试图通过澳大利亚国家图书馆的API查找特定搜索词上的图片。我有以下函数,它们应该将查询从输入表单发送到api并接收图像,但是我没有接收到大多数图像。在一个特定的例子中,如果是搜索“sydney”,我只收到3张图片,而实际上还有更多。例如,它被返回。Javascript 为什么我只被返回了3张图片而不是正确的数量?,javascript,jquery,json,Javascript,Jquery,Json,我目前正在试图通过澳大利亚国家图书馆的API查找特定搜索词上的图片。我有以下函数,它们应该将查询从输入表单发送到api并接收图像,但是我没有接收到大多数图像。在一个特定的例子中,如果是搜索“sydney”,我只收到3张图片,而实际上还有更多。例如,它被返回。我知道您不熟悉此api,但在我下面的代码中,您是否看到了导致它不返回所有图像的任何内容?我已经改变了一些事情,试图找到问题,并放置了一些console.log语句,但它仍然对我不好 var availableImages = {
我知道您不熟悉此api,但在我下面的代码中,您是否看到了导致它不返回所有图像的任何内容?我已经改变了一些事情,试图找到问题,并放置了一些
console.log
语句,但它仍然对我不好
var availableImages = {
"nla": {
"numImages":0,
"url_pattern":"nla.gov.au",
"images":[]
},
};
var url_patterns = ["nla.gov.au"];
$(document).ready(function(){
$("form#searchTrove").submit();
$("form#searchTrove").submit(function() {
resetImageData();
//get input values
var searchTerm = $("#searchTerm").val().trim();
searchTerm = searchTerm.replace(/ /g,"%20");
var sortBy = $("#sortBy").val();
//create searh query
var url = "http://api.trove.nla.gov.au/result?key="
+ apiKey + "&l-availability=y%2Ff&encoding=json&zone=picture"
+ "&sortby=relevance&n=100&q=" + searchTerm + "&callback=?";
//print JSON object
console.log(url);
//get the JSON information we need to display the images
$.getJSON(url, function(data) {
$('#output').empty();
$.each(data.response.zone[0].records.work, processImages);
//console.log(data);
printImages();
});
});
});
function processImages(index, troveItem){
console.log("av"+ availableImages);
for(var i in availableImages){
//console.log(availableImages[i].url_pattern)
if(troveItem.identifier[0].value.indexOf(availableImages[i].url_pattern) >= 0){
console.log("Trove URL "+troveItem.identifier[0].value+" Pattern: "+availableImages[i]["url_pattern"]);
availableImages[i].numImages++;
availableImages.totalimages++;
availableImages[i]["images"].push(troveItem.identifier[0].value);
}
}
}
function printImages(){
$("#output").append("<h3>Image Search Results</h3>");
for(var i in availableImages){
if(availableImages[i]["url_pattern"]=="nla.gov.au" && availableImages[i]["numImages"]>0){
printNLAImages();
console.log(availableImages);
}
}
}
function printNLAImages(){
$("#output").append("<h3>National Library of Australia</h3><p>"
+availableImages["nla"]["numImages"]+" images found from <a href='http://"
+availableImages["nla"]["url_pattern"]+"'>"
+availableImages["nla"]["url_pattern"]+"</a></p>");
for (var i in availableImages["nla"]["images"]){
$("#output").append("<img src='"+availableImages["nla"]["images"][i]+"-v'>");
}
console.log(availableImages);
}
function resetImageData(){
availableImages.totalimages = 0;
for (var i in availableImages){
availableImages[i].numImages = 0;
availableImages[i]["images"] = [];
}
console.log(availableImages); //displaying hee
}
var availableImages={
“nla”:{
“numImages”:0,
“url_模式”:“nla.gov.au”,
“图像”:[]
},
};
var url_patterns=[“nla.gov.au”];
$(文档).ready(函数(){
$(“表单#searchTrove”).submit();
$(“表单#searchTrove”).submit(函数(){
resetImageData();
//获取输入值
var searchTerm=$(“#searchTerm”).val().trim();
searchTerm=searchTerm.replace(//g,“%20”);
var sortBy=$(“#sortBy”).val();
//创建searh查询
变量url=”http://api.trove.nla.gov.au/result?key="
+apiKey+“&l-availability=y%2Ff&encoding=json&zone=picture”
+“&sortby=relevance&n=100&q=“+searchTerm+”&callback=?”;
//打印JSON对象
console.log(url);
//获取显示图像所需的JSON信息
$.getJSON(url、函数(数据){
$(“#输出”).empty();
$.each(data.response.zone[0].records.work,processImages);
//控制台日志(数据);
打印图像();
});
});
});
函数processImages(索引、troveItem){
console.log(“av”+可用图像);
对于(可用图像中的var i){
//console.log(availableImages[i].url\u模式)
if(troveItem.identifier[0].value.indexOf(availableImages[i].url\u模式)>=0){
console.log(“Trove URL”+troveItem.identifier[0].value+”模式:“+availableImages[i][“URL_模式”]);
可用图像[i].numImages++;
availableImages.totalimages++;
availableImages[i][“images”].push(troveItem.identifier[0].value);
}
}
}
函数printImages(){
$(“#输出”).append(“图像搜索结果”);
对于(可用图像中的var i){
如果(availableImages[i][“url_pattern”]==“nla.gov.au”&&availableImages[i][“numImages”]>0){
printNLAImages();
console.log(可用图像);
}
}
}
函数printNLAImages(){
$(“#输出”).append(“澳大利亚国家图书馆”
+可用图像[“nla”][“numImages”]+“从”中找到的图像”;
对于(availableImages[“nla”][“images”]中的var i){
$(“#输出”)。追加(“”);
}
console.log(可用图像);
}
函数resetImageData(){
availableImages.totalimages=0;
对于(可用图像中的var i){
availableImages[i].numImages=0;
可用图像[i][“图像”]=[];
}
console.log(availableImages);//显示hee
}
您只使用标识符包含nla.gov.au
的图像,因此在printNLAImages
功能中,我是否应该删除所有[“nla”]?当您submit
页面时,它会重新加载所有内容。最好返回false
在$.getJSON()之后。
我认为问题出在processImage
中。但是我还没有真正检查所有的代码,所以我不确定它在做什么。我也不会每次提交时都使用resetImageData()
。