2016-05-16 36 views
0

我有一个jQuery API调用,它没有给我任何响应。下面的代码:维基百科的API没有响应使用jQuery调用

$(document).ready(function() { 
    $("#form").submit(function() { 

    var apiCall = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val(); 

    $.getJSON(apiCall, function(data) { 
    console.log(data); 
     }); 

    }); 

    }); 

我已成功使用此URL得到回应:https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=" + $("#searchTerm").val() + "&callback=?"

的问题是,我希望能够用返回的每个页面的URL,以及上述API调用只给我标题和片段,但没有URL。

根据MediaWiki(在沙箱中验证)提供URL的API调用是顶部代码示例中的一个:https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val()

但在我的代码中,它不返回任何东西。你可以看到整个行动在:https://codepen.io/khaledallen/pen/VaNGMa?editors=1011

任何指导将不胜感激(这也是我的第一个stackoverflow问题,所以任何关于问题礼仪的指导是有帮助的)。

+0

这两个答案都解决了另一个问题,即页面刷新时第一次提交表单时未提取任何数据,但该URL仍未生成响应。请帮忙 –

回答

0

当您提交表单时,它实际上应用了浏览器定义的默认行为,这意味着它将您重定向到表单的action属性。实际上,因为action设置为#,页面只是刷新。

为了解决这个问题,您应该防止默认行为简单地使用:

$(document).ready(function() { 
    $("#form").submit(function(e) { 
     e.preventDefault(); 

添加事件对象作为参数传递给提交事件处理程序(e),并在应用preventDefault方法它。

看看这个codepen:https://codepen.io/anon/pen/PNgMGW?editors=1011

+0

谢谢。这是代码的一个问题。它仍然没有加载任何API网址。只是一个空的物体。 –

+0

它确实加载。 codepen的控制台出于某种原因不显示它。打开开发者工具,你会看到数据。 –

0

我想通了。

  1. 似乎MediaWiki沙盒生成的URL用UTF-8代码替换特殊字符,但它不能读取它们(?)。我将URL中的所有内容更改为常规字符,并且工作正常。
  2. 添加format=2选项帮助。这就是MediaWiki内(https://www.mediawiki.org/wiki/API:JSON_version_2
  3. 这里JSON格式选项一个人返回标题和URL网址:https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info&generator=search&callback=?&utf8=1&formatversion=2&inprop=url&gsrsearch=Sophia&gsrprop=snippet"

我不能得到它显示的网址,并提取/片段,所以这只是一个部分解决。

+0

最后:页面的URL只是基本URL +页面标题。所以我可以使用旧的解决方案,它一直给出一个片段。 'https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=“+ $(”#searchTerm“)。val()+”&callback =?'并追加页面标题为基本网址。 –