Javascript $.getJSON()调用引发错误

Javascript $.getJSON()调用引发错误,javascript,jquery,html,api,getjson,Javascript,Jquery,Html,Api,Getjson,当通过条件语句调用父函数时,我不明白为什么.getJSON会抛出错误。当注释掉if语句时,似乎没有问题,并且调用了.getJSON。但是,我希望用户完成输入(按enter键表示) HTML文件 <div class="text-center searchBar"> <form action=""> <input type="text" id="searchText" /> </form> </div> <div

当通过条件语句调用父函数时,我不明白为什么.getJSON会抛出错误。当注释掉if语句时,似乎没有问题,并且调用了.getJSON。但是,我希望用户完成输入(按enter键表示)

HTML文件

<div class="text-center searchBar">
  <form action="">
    <input type="text" id="searchText" />
  </form>
</div>

<div class="container displayResults"> </div>

Javascript:

$(document).ready(function() {
   $('#searchText').keyup(function(e) {
     var searchItem = $('#searchText').val();
     var link = 'https://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&exlimit=max&inprop=url&generator=search&gsroffset=&format=json&formatversion=2&callback=?&gsrsearch=' + searchItem;

     if(e.which == 13) { //if user returns enter key
      wikiCall(link);
     }    
   });
});

function wikiCall(wikiLink) {  
  $.getJSON(wikiLink, function(searchResults) {      
    for (var i = 0; i < searchResults.query.pages.length; i++) {
      $(".displayResults").append("<div class='searchResultsContainer'><span style='font-weight:bold; font-size:150%; margin-bottom:100px;'>" + searchResults.query.pages[i].title + "</span><br></br>" + searchResults.query.pages[i].extract + "</div>");
      $(".displayResults").append("<br>");
    }
  }).fail(function(jqxhr,textStatus,error){
    alert(textStatus+": "+error);
  });
}
$(文档).ready(函数(){
$('#searchText').keyup(函数(e){
var searchItem=$('#searchText').val();
var-link=https://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&exlimit=max&inprop=url&generator=search&gsroffset=&format=json&formatversion=2&callback=?&gsrsearch='+searchItem;
如果(e.which==13){//if用户返回回车键
维基呼叫(链接);
}    
});
});
函数wikiCall(wikiLink){
$.getJSON(wikiLink,函数(搜索结果){
for(var i=0;i
“+searchResults.query.pages[i].extract+”); $(“.displayResults”)。追加(
”); } }).fail(函数(jqxhr、textStatus、error){ 警报(textStatus+:“+错误); }); }
我测试了你的软件,但我只犯了一个错误:keyup而不是keypress plus stop propagation

在以下代码中:

函数wikiCall(wikiLink){
$.getJSON(维基链接,函数(搜索结果){
for(var i=0;i
“+searchResults.query.pages[i].extract+”); $(“.displayResults”)。追加(
”); } }).fail(函数(jqxhr、textStatus、error){ 警报(textStatus+:“+错误); }); } $(函数(){ $('#searchText')。按键(函数(e){ var searchItem=$('#searchText').val(); var-link=https://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&exlimit=max&inprop=url&generator=search&gsroffset=&format=json&formatversion=2&callback=?&gsrsearch='+searchItem; 如果(e.which==13){//if用户返回回车键 维基呼叫(链接); e、 预防默认值(); } }); });
我测试了你的软件,但我只犯了一个错误:keyup而不是keypress plus stop propagation

在以下代码中:

函数wikiCall(wikiLink){
$.getJSON(维基链接,函数(搜索结果){
for(var i=0;i
“+searchResults.query.pages[i].extract+”); $(“.displayResults”)。追加(
”); } }).fail(函数(jqxhr、textStatus、error){ 警报(textStatus+:“+错误); }); } $(函数(){ $('#searchText')。按键(函数(e){ var searchItem=$('#searchText').val(); var-link=https://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&exlimit=max&inprop=url&generator=search&gsroffset=&format=json&formatversion=2&callback=?&gsrsearch='+searchItem; 如果(e.which==13){//if用户返回回车键 维基呼叫(链接); e、 预防默认值(); } }); });


您可能想尝试禁用表单提交事件<代码>$('.searchBar form')。在('submit',函数(e){e.preventDefault();返回false;})上以避免用户按enter键时表单提交。在将数据添加到正文之前,还要检查响应是否有
query
键。@LucasFerreira谢谢你,在按下enter键时避免表单提交才是关键。@fzxt.fail()没有给我太多的工作来解释错误是什么。显示的警报是:error:error您可能希望尝试禁用表单提交事件<代码>$('.searchBar form')。在('submit',函数(e){e.preventDefault();返回false;})上以避免用户按enter键时表单提交。在将数据添加到正文之前,还要检查响应是否有
query
键。@LucasFerreira谢谢你,在按下enter键时避免表单提交才是关键。@fzxt.fail()没有给我太多的工作来解释错误是什么。显示的警报是:error:error我对待他们的方式是一样的:keypup,keypress,keypdown。我很高兴我能够使用keypress来抑制默认设置,但我不明白为什么不能使用keyup来抑制默认设置。我找到了上面我自己问题的答案:提交后会触发keyup,因此不能取消。@CodingerSK我给出了答案:是的,在keyup上你不能停止表单提交。我对待他们的方式是一样的:keyup,keypress,keydown。我很高兴我能够使用keypress来抑制默认设置,但我不明白为什么不能使用keypup来抑制默认设置。我找到了上面我自己问题的答案:keypup是在提交后触发的,因此不能取消。@CodingerSK I updtaed答案:是的,在keypup上你不能停止表单提交。