2016-08-22 119 views
0

我已经阅读了大量的帖子,旧的,新的和维基百科的文档。如何使用jQuery和维基百科API进行搜索

我有这样的要求,工程本身和的SANbox:

但是当我尝试在JavaScript脚本中使用它,我不能让数据:

我试过ajax和Json:

这里是我使用的代码:

  • 一个 'GET' 使用Ajax请求:

代码标记吮吸

function build_wiki_search_url(pattern) { 
    var base_url = "https://en.wikipedia.org/w/api.php"; 
    var request_url = "?action=query&format=json&list=search&srsearch="; 
    var url = base_url + request_url + pattern; 
    return url; 
} 

$(document).ready(function() { 
    $("#doit").click(function() { 
     console.log("Submit button clicked"); 
     var pattern = $("#search").val(); 
     var url = build_wiki_search_url(pattern); 
     console.log(url); 
    $.ajax({ 
     type: "GET", 
     url: url, 
     dataType: 'jsonp', 
     success: function(data) { 
      console.log(data); 
     }, 
     error: function(errorMessage) { 
      console.log("damnn"); 
      } 
     }); 
     console.log("end"); 
    }); 
}) 
  • 与以下AJAX的一个 'POST' 请求维基百科文档

    var base_url = "https://en.wikipedia.org/w/api.php"; 
        $.ajax({ 
        contentType: "application/json; charset=utf-8", 
         url: base_url, 
         data: { 
          action: 'query', 
          list: 'search', 
          format: 'json', 
          srsearch: 'einstein', 
          origin: '*', 
        }, 
         dataType: 'json', 
         type: 'POST', 
         success: function(data) { 
          console.log("ok"); 
    
          // do something with data 
         }, 
         error: function(errorMessage) { 
          console.log("damnn"); 
         } 
        }); 
    
  • 和的getJSON尝试:

    //getJSON atempt. 
        console.log(url + '&callback=?'); 
        $.getJSON(url + '&callback=?', function(json) { 
         console.log("ok"); 
         }); 
    

这里是我的控制台输出:

Submit button clicked  
https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&srsearch=einstein 
script.js 
end 

回答

0

这个问题来,其实从HTML:

<form > 
    <input type="text" id="search"> <button id="doit"> Search!!</button> 
</form> 

由于该按钮是一种形式,这个按钮的正常行为是生成一个提交动作。这样的想法是禁用此正常行为:

$("#doit").click(function(e) { 
    e.preventDefault(); 

完整的工作代码:

function build_wiki_search_url(pattern) { 
    var base_url = "https://en.wikipedia.org/w/api.php"; 
    var format = "&format=json"; 
    var request_url = "?action=query&format=json&list=search&srsearch="; 
    var url = base_url + request_url + pattern; 
    return url; 
} 
$(document).ready(function() { 
    $("#doit").click(function(e) { 
     e.preventDefault(); 
     console.log("Submit button clicked"); 
     var pattern = $("#search").val(); 
     var url = build_wiki_search_url(pattern); 
     $.ajax({ 
      type: "GET", 
      url: url, 
      dataType: 'jsonp', 
      success: function(data) { 
       console.log(data.query.searchinfo.totalhits); 
      }, 
      error: function(errorMessage) { 
       console.log("damnn"); 
       } 
     }); 
    }); 
})