javascript - $.getJSON 不返回结果

标签 javascript html json

我需要创建一个页面,允许用户搜索以获取包含其结果的维基百科页面。

相关的 HTML 是:

<form class='search-form' onsubmit='return false'>
  <input class='search-input' id="search-input" type="text" />
  <button class='btn search-btn'><i class="fa fa-search" aria-hidden="true"></i></button>
</form>

JS 是:

$(document).ready(function() {
  $(".search-btn").on("click", function() {
    $.getJSON(
      "https://en.wikipedia.org/w/api.php?action=opensearch&search=te&format=json",
      function(data) {
        alert(JSON.stringify(data));
      }
    );
  });
});

一旦我运行此警报,我需要更改警报以打开一个窗口,其中包含 JSON 数据中包含的 URL,但当我到达它时,我将跨过那座桥。目前,JSON 根本没有执行任何操作。

最佳答案

以下是如何向维基百科发出返回 JSONP 的请求,这样就可以在没有 CORS header 的情况下执行跨源请求

function getWiki(query) {
  return $.ajax({
    url: 'https://en.wikipedia.org/w/api.php',
    data: {
      format: 'json',
      action: 'opensearch',
      search: query
    },
    jsonp: "callback",
    dataType: 'jsonp'
  });
}

$('.search-form').on('submit', function(e) {
  e.preventDefault();
  var q = $('#search-input').val();
  
  getWiki(q).done(function(data) {
      console.log(data);
  }).fail(function(err) {  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form class='search-form'>
  <input class='search-input' id="search-input" type="text" />
  <button class='btn search-btn'>Search</button>
</form>

关于javascript - $.getJSON 不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45901586/

相关文章:

html - 定位元素 : Div on top of another div

java - 比较 ArrayList 中的 JSONArray 列表

javascript - 创建一个 PHP json 提要并成功将其链接到 javascript

javascript - CRM 2011 JavaScript - 从一个字段修改日期并设置为另一个字段

javascript - 保持多选jquery的滚动位置

html - CSS - 页脚内有多个 Div 的粘性页脚不起作用

javascript - 如何提取/下载JS播放的音频?

javascript - 火狐浏览器返回 false; (preventDefault();) 和 window.location.reload();一起

javascript - CasperJS for 循环每次迭代都会产生相同的结果

javascript - jQuery 无法完成提交并在地址中添加参数