Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我只被返回了3张图片而不是正确的数量?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 为什么我只被返回了3张图片而不是正确的数量?

Javascript 为什么我只被返回了3张图片而不是正确的数量?,javascript,jquery,json,Javascript,Jquery,Json,我目前正在试图通过澳大利亚国家图书馆的API查找特定搜索词上的图片。我有以下函数,它们应该将查询从输入表单发送到api并接收图像,但是我没有接收到大多数图像。在一个特定的例子中,如果是搜索“sydney”,我只收到3张图片,而实际上还有更多。例如,它被返回。我知道您不熟悉此api,但在我下面的代码中,您是否看到了导致它不返回所有图像的任何内容?我已经改变了一些事情,试图找到问题,并放置了一些console.log语句,但它仍然对我不好 var availableImages = {

我目前正在试图通过澳大利亚国家图书馆的API查找特定搜索词上的图片。我有以下函数,它们应该将查询从输入表单发送到api并接收图像,但是我没有接收到大多数图像。在一个特定的例子中,如果是搜索“sydney”,我只收到3张图片,而实际上还有更多。例如,它被返回。
我知道您不熟悉此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()