Javascript 为什么';这个对api的调用不适用于3个字母的单词吗?

Javascript 为什么';这个对api的调用不适用于3个字母的单词吗?,javascript,jquery,json,Javascript,Jquery,Json,所以每次我运行这个,arrayOfWords有3个字母的单词,这个函数就不起作用了,我也不知道为什么。JSON对象看起来非常好,但它没有通过if语句。任何关于如何解决这一问题的见解都将不胜感激 function createAdjectives() { var arrayOfWords = $('#inputTerms').val().split('\n'); alert(arrayOfWords); for (var i = 0; i <

所以每次我运行这个,arrayOfWords有3个字母的单词,这个函数就不起作用了,我也不知道为什么。JSON对象看起来非常好,但它没有通过if语句。任何关于如何解决这一问题的见解都将不胜感激

  function createAdjectives() {
        var arrayOfWords = $('#inputTerms').val().split('\n');
        alert(arrayOfWords);
        for (var i = 0; i <= arrayOfWords.length-1; i++) {
            $.getJSON("http://words.bighugelabs.com/api/2/mykey/"+arrayOfWords[i]+"/json?callback=?",
            function(json) {
                if(json['adjective']['syn'])
                {
                    for (var i = 0; i < json['adjective']['syn'].length-1; i++) {
                        adjectiveArray.push(json['adjective']['syn'][i]);
                    }
                }
                if(json['adjective']['sim'])
                {
                    for (var i = 0; i < json['adjective']['sim'].length-1; i++) {
                        adjectiveArray.push(json['adjective']['sim'][i]);
                    }
                }
                alert("got here");
                if(json['noun']['syn'])
                {
                    for (var i = 0; i < json['noun']['syn'].length-1; i++) {
                        nounArray.push(json['noun']['syn'][i]);
                    }
                }
                if(json['noun']['sim'])
                {
                    for (var i = 0; i < json['noun']['sim'].length-1; i++) {
                        nounArray.push(json['noun']['sim'][i]);
                    }
                }
                alert(adjectiveArray);
                alert(nounArray);
            });
        }
    }
在这种特殊情况下(可能与您使用3个字母单词测试的所有时间相关,也可能与此无关),问题可能是您试图访问
json
结果对象中
形容词
对象的
syn
属性,但没有
形容词
对象


您可能只需要另一层
if
语句来验证
形容词
名词
等是否存在,然后再尝试检查
形容词
中的
syn
sim
属性等。

使用3个字母单词运行函数时会出现什么错误?没有错误,只是不运行。我的一个朋友收到了错误“无法读取未定义的属性”syn“。我认为Cberube的回答会解决这个问题。根据我使用JSON的经验,当没有对象时,JSON会用
null
?({"noun":{"syn":["tally","test","trial","footrace","foot race","streak","running","running play","running game","rivulet","rill","runnel","streamlet","political campaign","campaign","ladder","ravel","discharge","outpouring","attempt","chronological sequence","chronological succession","damage","effort","endeavor","endeavour","flow","flowing","football play","harm","impairment","indefinite quantity","liberty","locomotion","period","period of time","race","score","sequence","stream","succession","successiveness","time period","travel","trip","try","watercourse"]},"verb":{"syn":["run","scat","scarper","turn tail","lam","run away","hightail it","bunk","head for the hills","take to the woods","escape","fly the coop","break away","go","pass","lead","extend","operate","flow","feed","course","function","work","range","campaign","play","tend","be given","lean","incline","prevail","persist","die hard","endure","execute","carry","guide","draw","black market","bleed","run for","consort","ply","hunt","hunt down","track down","race","move","melt","melt down","ladder","unravel","accompany","accomplish","action","apply","be","become","break","break up","bring home the bacon","broadcast","capture","carry out","carry through","catch","change","circularise","circularize","circulate","come apart","come through","compete","contend","continue","deliver the goods","diffuse","direct","disintegrate","disperse","displace","disseminate","dissolve","distribute","enforce","fall apart","fan out","free","fulfil","fulfill","get","go across","go away","go forth","go through","hurry","implement","incur","jaunt","last","leave","liberate","locomote","loose","make pass","merchandise","occur","pass around","process","propagate","release","resolve","sail","separate","speed","split up","spread","spread out","succeed","trade","travel","travel rapidly","treat","trip","unloose","unloosen","vie","win","zip"],"ant":["idle","malfunction"],"rel":["run away","extend to","flow from","pass around","pass over","run along","run around","run off","run over"]}});