0

我正在做的工作是提供 1 行即时术语定义,也许可以用一行来回答几个逻辑问题。假设用户输入“JavaScript”,JavaScript访问url https://api.duckduckgo.com/?q=JavaScript&format=json&pretty=1,得到“Definition”项(看API链接理解,Definition在第一行本身)并显示其定义值并用所需数据提醒用户。

无论如何,我目前的代码是:

<html>
<head>
<title>Hi</title></head>
<body>
<input id="ddgAPI"><button>Search</button>
<div id="output"></div>
</body>
</html> 

请注意,我没有输入所需的 JavaScript/jQuery 代码,因为我对此感到困惑。谢谢 :)

4

2 回答 2

4

因为这是一个跨域请求,您只能使用代理或 JSONP 执行此操作。幸运的是DuckDuckGo 支持 JSONP,因此您只需要确保向 URL 请求添加回调参数,例如:

https://api.duckduckgo.com/?q=JavaScript&format=json&pretty=1&callback=jsonp

...或使用适当的 jsonp 参数和 jQuery 的 ajax 方法,例如:

$('#ddgAPI').on('keyup', function(e) {

  if (e.which === '13') {
    $.ajax({
      type: 'GET',
      url: 'https://api.duckduckgo.com/',
      data: { q: $(this).val(), format: 'json', pretty: 1 },
      jsonpCallback: 'jsonp',
      dataType: 'jsonp'
    }).then(function (data) {
      console.log(data);
    });
  }

});
于 2013-09-02T14:00:12.540 回答
0

使用jQuery.ajax()与远程服务对话。url应该是https://api.duckduckgo.comtype应该是GETdata应该:

var data = { q:'JavaScript', format:'json', pretty:1 };

然后,jQuery 会将所有内容编译为 AJAX 请求,并将其发送到服务器。传递一个函数,success以便您可以对结果做一些事情:

$.ajax({
    url: "https://api.duckduckgo.com",
    type: "GET",
    data: { q:'JavaScript', format:'json', pretty:1 },
    success: function(data) {  $('#output').html(data); }
});
于 2013-09-02T13:29:32.970 回答