我有一个jQuery API调用,但没有给我任何回复。这是代码:
$(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);
});
});
});
我已设法使用此网址获得回复:https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=" + $("#searchTerm").val() + "&callback=?"
问题在于我希望能够使用返回的每个网页的网址,而上述API调用仅提供标题和摘要,但没有网址。
根据MediaWiki(在沙箱中验证),确实提供URL的API调用是顶部代码示例中的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 :(得分:0)
当您提交表单时,它实际上会应用浏览器定义的默认行为,这意味着它会将您重定向到表单的action
属性。实际上,由于action
设置为#
,因此页面只是刷新。
要解决此问题,您应该只使用以下命令来阻止默认行为:
$(document).ready(function() {
$("#form").submit(function(e) {
e.preventDefault();
将事件对象作为参数添加到提交事件处理程序(e
),并在其上应用preventDefault
方法。
答案 1 :(得分:0)
我明白了。
format=2
选项有帮助。这是mediawiki(https://www.mediawiki.org/wiki/API:JSON_version_2)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"
我无法显示网址和摘录/摘要,因此这只是部分解决方案。